C++_系列自学课程_第_12_课_结构体

  1 #include <iostream>
  2 #include <string>
  3
  4 using namespace std;
  5
  6 struct CDAccount
  7 {
  8     double balance; //余额
  9     double rate;    //利息
 10     int       term;    //存期
 11 };
 12
 13 struct Date
 14 {
 15     int year;
 16     int month;
 17     int day;
 18 };
 19
 20 struct Person
 21 {
 22     string name;
 23     Date   birthday;
 24     CDAccount account;
 25
 26 };
 27
 28 //****************************************
 29 void get_data(CDAccount& account);
 30 double caculate_balance(CDAccount account);
 31 Person get_person_data(void);
 32 void display_person(Person* person);
 33
 34
 35
 36 //***************************************
 37 //process entry
 38 int main(int argc,char* argv[]) try
 39 {
 40 //*********************
 41 //演示结构体的一般用法
 42     CDAccount marry;
 43
 44     //获取数据
 45     get_data(marry);
 46
 47     //计算利息 结构体成员赋值
 48     marry.balance = caculate_balance(marry);
 49
 50     //输出信息
 51     cout<<"marry的账户余额为:"<<marry.balance<<endl;
 52
 53     CDAccount bob;
 54
 55     //结构体整体赋值
 56     bob = marry;
 57
 58     cout<<"bob的账户余额为:"<<bob.balance<<endl ;
 59
 60     //结构体初始化
 61     CDAccount lee = {3000,0.12,3};
 62
 63     //visual c++ 不支持下面的初始化方式, g++支持,属于实现的扩展,本身不是C++的一部分功能
 64     /*CDAccount jack = {
 65                         .balance = 4000;
 66                         .rate = 0.5;
 67                         .term = 10;
 68                      }*/
 69
 70 //***************************
 71 //演示嵌套结构体的用法
 72     Person dudo;
 73
 74     //输入个人信息, 函数返回结构体
 75     dudo = get_person_data();
 76
 77     display_person(&dudo);
 78
 79
 80     char ch;
 81     cin>>ch;
 82     return 0;
 83 }
 84 catch(...)
 85 {
 86     cout<<"捕捉到异常"<<endl;
 87 }
 88
 89
 90 //获取数据  函数传递结构引用
 91 void get_data(CDAccount& account)
 92 {
 93     cout<<"请输入本金、利率和存期(存期以月份计算,最大为12个月):";
 94     cin>>account.balance;
 95     cin>>account.rate ;
 96     cin>>account.term ;
 97 }
 98
 99
100 //计算余额  函数传递结构体
101 double caculate_balance(CDAccount account)
102 {
103     double balance;
104
105     balance = account.balance + account.balance * account.rate * account.term;
106
107     return balance;
108 }
109
110 //获取个人信息
111 Person get_person_data(void)
112 {
113     Person person;
114     cout<<"请输入账户名称,生日(年、月、日):";
115     cin>>person.name >>person.birthday.year >>person.birthday.month>>person.birthday.day ;
116
117     cout<<"请输入"<<person.name <<"的信息,本金、利息和存期(存期最大12个月):";
118     cin>>person.account.balance >>person.account.rate >>person.account.term ;
119
120     return person;
121 }
122
123
124 //显示信息, 演示结构体指针变量的使用
125 void display_person(Person* person)
126 {
127     cout<<"名字是:"<<person->name<<endl;
128     cout<<"生日是:"<<person->birthday.year<<"-"<<person->birthday.month<<"-"<<person->birthday.day<<endl;
129     cout<<"账户信息:"<<person->account.balance<<"\t"<<person->account.rate<<‘\t‘<<person->account.term<<endl;
130
131 }
时间: 2024-11-05 12:16:48

C++_系列自学课程_第_12_课_结构体的相关文章

C++_系列自学课程_第_12_课_语句_《C++ Primer 第四版》

前面的文章说完了表达式和类型转换的部分内容,在我参考的书里面,接下来讨论的是各种语句,包括:顺序语句.声明语句.复合语句(块语句).语句作用域 .if语句.while语句.for语句.do...while语句.break语句.continue语句.goto语句.try语句. 这里我们来讨论这些语句,为了方便讨论和记忆,我们可以将这些语句可以分为五大类:   简单语句.条件语句.循环语句.流程控制语句.异常处理.当然也可以 不这么分类,我这么说就是为了自己好理解和记忆. 一.简单语句 我将顺序语句

C++_系列自学课程_第_7_课_数组_《C++ Primer 第四版》

说到数组,大家应该都很熟悉,在C.Pascal.Java等语言中,都有数组的概念.在C++中也提供了对数组的支持.数组简单来说就是一堆相同 数据类型对象的集合. 这里要把握住两个要点: 相同的数据类型.集合. 一.数组 1.定义 数组是由数组存储的对象的类型名.标识符和数组维数组成一种复合数据类型. 类型名规定了可以存储在数组中的对象的类型, 标识符用来标识 数组,用来在程序中引用数组元素, 维数用来规定数组可以存放多少数组元素. 数组的定义如下所示: 类型名 数组标识符[n]; 下面是一些数组

C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》

在C语言中要对一个整数的某一个位进行操作需要用到很多的技巧.这种情况在C++里面通过标准库提供的一个抽象数据类型 bitset得到了改善. 一.标准库bitset类型 1.bitset的作用 bitset可以看成bit的集合,可以单独的访问集合中的某一位,访问的结果可以作为逻辑的判断的条件.使用bitset的时候可以 不关心这些bit的存储方式,而通过bitset类型提供的一套接口进行操作. 和string和vector一样,要使用bitset类型,需要报备,如下所示: #include <bi

C++_系列自学课程_第_3_课_变量和基本类型_《C++ Primer 第四版》

最近复习C++相关内容,决定在这里记录自己复习的过程. 以前写过部分文字,但是没有坚持连续写,因此学完后 基本又忘光啦,主要是没有实践,这一次决定自学完后,在这里在复习一遍增强自己的记忆和理解程度. 一.基本内置类型 C++语言内置了一些数据类型,主要有两大类: 整型和浮点型. 整型又有:  bool型.char型.wchar_t型.short型,int型,long int型. 浮点型有: float型, double型.long double型(扩展双精度型). 我们知道不同的数据类型决定了不

C++_系列自学课程_第_5_课_vector容器_《C++ Primer 第四版》

再一次遇到 vector 这个单词; 每一次见到这个单词都感觉这个单词非常的 "高大上"; 数字遇到vector马上就可以360度旋转: 当 "电" 遇到vector,马上让交流可以变得和直流一样进行控制(德国电气工程师的矢量控制理论,目前在工控界对电机控制应用 非常广泛,是变频器控制的基础理论,可惜的是中国目前没有这方面的真正的专家, 就是IT行业中的TI公司的TMS320LF24xx系列 DSP做的事,中国的基础理论的研究真的是落后于西方发达国家很多年),而在C

C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》

C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容.指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法.C++继承这一高效的机制,同时引入了另一个与指针相似但不相同的机制: 引用. 一.引用 简单的来说,引用就是变量的别名(alias), 通过别名我们可以操作引用代表的变量. 定义一个引用的语法如下所示: 变量类型   &引用标识符 = 变量名. Exp: int iVar=10; int &iRef = iVa

C++_系列自学课程_第_4_课_string_《C++ Primer 第四版》

相信学习过计算机编程的人,基本应该都接触过C语言,在C语言中处理字符串大家一定多遇到过, 也都知道处理字符串非常麻烦,而在C++里面,由标准库string类提供对可变长的字符串的支持.下面 来看看string类的特性. 1.使用的先决条件 在使用标准库之前必须包含相应的头文件, 要使用string类型,就需要包含相应的头文件,如下所示: #include <string> 在使用iostream的时候,我们未来引用iostream里面的类,前面需要加上  std::  来表示引用的是标准 IO

C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》

上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符的操作数可以同时有int型,也可以有float型, 这就引入了一个问题到底应该由什么 决定表达式的值的类型. 例如: 3.1415926 + 5; //double类型 + 整型, 结果为什么类型呢?? 3.1415926 * 2 * 3 ; //double类型 * 整型 * 整型: 得到的表达式

C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》

程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一个操作数或者多个操作数同操作符组合而成: 字面值是一个最简单的表达式.  表达式都会产生一个结果,如果表达式中没有操作符,则表达式 的值是操作数本身, 如果表达式中有操作符,则表达式的结果是操作符对操作数进行操作后的结果. 一般而言表达式的返回的是右值,不能给表达式赋值, 但可以获取表达式的值. E