C++_系列自学课程_第_12_课_结构体
- #include <iostream>
- #include <string>
- using namespace std;
- struct CDAccount
- {
- double balance; //余额
- double rate; //利息
- int term; //存期
- };
- struct Date
- {
- int year;
- int month;
- int day;
- };
- struct Person
- {
- string name;
- Date birthday;
- CDAccount account;
- };
- //****************************************
- void get_data(CDAccount& account);
- double caculate_balance(CDAccount account);
- Person get_person_data(void);
- void display_person(Person* person);
- //***************************************
- //process entry
- int main(int argc,char* argv[]) try
- {
- //*********************
- //演示结构体的一般用法
- CDAccount marry;
- //获取数据
- get_data(marry);
- //计算利息 结构体成员赋值
- marry.balance = caculate_balance(marry);
- //输出信息
- cout<<"marry的账户余额为:"<<marry.balance<<endl;
- CDAccount bob;
- //结构体整体赋值
- bob = marry;
- cout<<"bob的账户余额为:"<<bob.balance<<endl ;
- //结构体初始化
- CDAccount lee = {,0.12,};
- //visual c++ 不支持下面的初始化方式, g++支持,属于实现的扩展,本身不是C++的一部分功能
- /*CDAccount jack = {
- .balance = 4000;
- .rate = 0.5;
- .term = 10;
- }*/
- //***************************
- //演示嵌套结构体的用法
- Person dudo;
- //输入个人信息, 函数返回结构体
- dudo = get_person_data();
- display_person(&dudo);
- char ch;
- cin>>ch;
- return ;
- }
- catch(...)
- {
- cout<<"捕捉到异常"<<endl;
- }
- //获取数据 函数传递结构引用
- void get_data(CDAccount& account)
- {
- cout<<"请输入本金、利率和存期(存期以月份计算,最大为12个月):";
- cin>>account.balance;
- cin>>account.rate ;
- cin>>account.term ;
- }
- //计算余额 函数传递结构体
- double caculate_balance(CDAccount account)
- {
- double balance;
- balance = account.balance + account.balance * account.rate * account.term;
- return balance;
- }
- //获取个人信息
- Person get_person_data(void)
- {
- Person person;
- cout<<"请输入账户名称,生日(年、月、日):";
- cin>>person.name >>person.birthday.year >>person.birthday.month>>person.birthday.day ;
- cout<<"请输入"<<person.name <<"的信息,本金、利息和存期(存期最大12个月):";
- cin>>person.account.balance >>person.account.rate >>person.account.term ;
- return person;
- }
- //显示信息, 演示结构体指针变量的使用
- void display_person(Person* person)
- {
- cout<<"名字是:"<<person->name<<endl;
- cout<<"生日是:"<<person->birthday.year<<"-"<<person->birthday.month<<"-"<<person->birthday.day<<endl;
- cout<<"账户信息:"<<person->account.balance<<"\t"<<person->account.rate<<'\t'<<person->account.term<<endl;
- }
C++_系列自学课程_第_12_课_结构体的更多相关文章
- C++_系列自学课程_第_12_课_语句_《C++ Primer 第四版》
前面的文章说完了表达式和类型转换的部分内容,在我参考的书里面,接下来讨论的是各种语句,包括:顺序语句.声明语句.复合语句(块语句).语句作用域 .if语句.while语句.for语句.do...whi ...
- C++_系列自学课程_第_7_课_数组_《C++ Primer 第四版》
说到数组,大家应该都很熟悉,在C.Pascal.Java等语言中,都有数组的概念.在C++中也提供了对数组的支持.数组简单来说就是一堆相同 数据类型对象的集合. 这里要把握住两个要点: 相同的数据类型 ...
- C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》
在C语言中要对一个整数的某一个位进行操作需要用到很多的技巧.这种情况在C++里面通过标准库提供的一个抽象数据类型 bitset得到了改善. 一.标准库bitset类型 1.bitset的作用 bits ...
- C++_系列自学课程_第_5_课_vector容器_《C++ Primer 第四版》
再一次遇到 vector 这个单词; 每一次见到这个单词都感觉这个单词非常的 "高大上"; 数字遇到vector马上就可以360度旋转: 当 "电" 遇到vec ...
- C++_系列自学课程_第_3_课_变量和基本类型_《C++ Primer 第四版》
最近复习C++相关内容,决定在这里记录自己复习的过程. 以前写过部分文字,但是没有坚持连续写,因此学完后 基本又忘光啦,主要是没有实践,这一次决定自学完后,在这里在复习一遍增强自己的记忆和理解程度. ...
- C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》
上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...
- C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》
程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一 ...
- C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...
- C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》
C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容.指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法.C++继承这一高效 ...
随机推荐
- 原生JS实现-星级评分系统
今天我又写了个很酷的实例:星级评分系统(可自定义星星个数.显示信息) sufuStar.star();使用默认值5个星星,默认信息 var msg = [........]; sufuStar.sta ...
- 使用apache自带日志分割模块rotatelogs,分割日志
rotatelogs 是 Apache 2.2 中自带的管道日志程序,参数如下(参见:http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/rotat ...
- Linux初识
在这篇文章中你讲看到如下内容: 计算机的组成及功能: Linux发行版之间的区别和联系: Linux发行版的基础目录及功用规定: Linux系统设计的哲学思想: Linux系统上获取命令帮助,及man ...
- nginx启动报错:/usr/local/nginx/sbin/nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
查看依赖库:
- ola.hallengren的SQL Server维护脚本
ola.hallengren的SQL Server维护脚本 下载地址 http://files.cnblogs.com/files/lyhabc/ola.hallengrenMaintenanceSo ...
- XSS 前端防火墙 —— 可疑模块拦截
上一篇介绍的系统,已能预警现实中的大多数 XSS 攻击,但想绕过还是很容易的. 由于是在前端防护,策略配置都能在源代码里找到,因此很快就能试出破解方案.并且攻击者可以屏蔽日志接口,在自己电脑上永不发出 ...
- Android(3)—Mono For Android App版本自动更新(2)
0.前言 这篇博文是上一篇的延续,主要是修改上一个版中的BUG和优化一些待完善的项,也算是结贴,当然还有需要完善的,等日后项目中用到的时候再单独写出来吧,本篇主要写升级改进的部分: 改进1.修复[BU ...
- SVG:textPath深入理解
SVG的文本可以沿着一条自定义的Path来排布,比如曲线.圆形等等,使用方式如下所示(来源MDN): <svg viewBox="0 0 1000 300" xmlns=&q ...
- U3D DrawCall优化手记
在最近,使用U3D开发的游戏核心部分功能即将完成,中间由于各种历史原因,导致项目存在比较大的问题,这些问题在最后,恐怕只能通过一次彻底的重构来解决 现在的游戏跑起来会有接近130-170个左右的Dra ...
- MailKit---获取邮件
MailKit是一个免费开源的邮箱类库,简单来说MailKit帮我们封装了有关邮箱的一些帮助类,提供方法让我们更容易使用邮箱的Smtp,Imap等邮箱协议. 现在的邮箱基本上都使用smtp协议从邮件服 ...