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 }

转载于:https://www.cnblogs.com/volcanol/p/5147837.html

C++_系列自学课程_第_12_课_结构体相关推荐

  1. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》

    前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...

  2. 初识C语言系列-5-完结篇-#define,指针,结构体

    目录 1.前言 2.#define定义常量和宏 #define定义常量 #define定义的宏 3.指针 内存 指针变量的大小  4.结构体 1.前言 终于到了初识C语言的完结篇了,这里再次祝大家五一 ...

  3. (c语言)有10个学生,每个学生数据包括学号、姓名、3门课程成绩,编写程序定义结构体从键盘上输入10个学生的学号、姓名和3门课程的成绩,并输出

    有10个学生,每个学生的数据包括学号.姓名.3门课程的成绩,编写程序定义结构体,从键盘上输入10个学生的学号.姓名和3门课程的成绩,并输出3门课程的总平均成绩和最高分的学生的数据(包括学号.姓名.3门 ...

  4. 51cto python数据分析系列课程 55g_热图_ Python数据分析系列视频课程--玩转数据可视化_数据可视化视频-51CTO学院...

    matplotlib包是基于Python平台的统计绘图利器,是在python平台上完成数据可视化不可或缺的工具,而基于matplotlib进一步开发的seaborn,更是将数据呈现与可视化的可用性推到 ...

  5. java结构体构建学生 学号_易错题: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。...

    根据网考网考试中心的统计分析,以下试题在2015-12-7日计算机二级考试C语言习题练习中,答错率较高,为:93% [填空题] 程序通过定义学生结构体变量,存储了学生的学号.姓名和3门课的成绩.所有学 ...

  6. 结构体定义小的放前面_编程C语言进阶篇——自定义数据类型:结构体

    一.结构体 定义方法: 结构名 变量名 特点: 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用"<","=="等运算符,如果使用则需要对运算符 ...

  7. c语言结构体数组存入文件_关于从文件中读取数据并写入结构体数组

    已结贴√ 问题点数:25 回复次数:10 关于从文件中读取数据并写入结构体数组 各位大大好,本人新手一枚,最近写简单的通讯录的c程序,其他功能完好,最后一个将txt文件中的数据写入结构体数组的函数无法 ...

  8. 韦东山uboot_内核_根文件系统学习笔记4.4-第004课_根文件系统-第004节_构建根文件系统之构建根文件系统

    一 最小的根文件系统需要的项(笔记4.1 4.2小结) (init 进程需要) 打开终端: /dev/console, /dev/NULL 不设置 inittab 格式中的 id(标准输入.输出和标准 ...

  9. c语言求学生平均分 总分结构体,c语言 已知学生三门课程基本信息如下。请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。(...

    满意答案 dante9573 2013.03.07 采纳率:42%    等级:12 已帮助:6621人 #include #define FORMAT "学号:%d\t姓名:%s\t语文: ...

最新文章

  1. 全球UML模型共享设计下载中心--www.euml.org上线
  2. S8赛事落幕,阿里云边缘计算护航虎牙7000万低延时流畅直播
  3. Linux Sed命令具体解释+怎样替换换行符quot;\nquot;(非常多面试问道)
  4. matlab 定义矩阵_MATLAB与Python,Mathematica由高维转化一维矩阵的方式的不同
  5. 关于Git和Github你不知道的十件事
  6. 修改linq结果集_UTXO集优化
  7. 实现主从关系Form中汇总行金额/数量
  8. JVM内存结构分析:为什么需要S0和S1?
  9. eclipse插件:打开选中文件所在的目录
  10. Edge Deletion CodeForces - 1076D(水最短路)
  11. 过程 线 多线程 并发 同步异步
  12. mysql分頁查詢_mysql分頁查詢 | 學步園
  13. JAVA基础系列:内部类获取外部类的成员变量
  14. java 获得 加载类_java 类的加载,与获得相应的方法
  15. 贪心 区间覆盖最小值
  16. python中 return self的作用
  17. Robot Framework 的安装配置和简单的实例介绍
  18. Ubuntu 20.04 安装 Google 拼音输入法
  19. java opencv 纠偏_一种基于OpenCV的高拍仪拍摄文档物体纠偏方法与流程
  20. 中国微流体系统市场趋势报告、技术动态创新及市场预测

热门文章

  1. spark1.0和2.0的区别_【系统】华为正式发布鸿蒙OS 2.0手机Beta版:UI界面、交互无区别...
  2. 1.MySQL目录结构
  3. Redis 热点key
  4. 算法学习——决策单调性优化DP
  5. Android gravity和layout_gravity的区别
  6. Linux:客户端的实现
  7. 细说shiro之三:在独立应用中使用shiro
  8. 【DP】【Asia - Harbin - 2010/2011】【Permutation Counting】
  9. SQL SERVER 一个SQL语句的执行顺序
  10. homebrew 常用命令