(1.4)C++Primer 第一章 书店程序、总结
·
1.6 书店程序
本节是第一章的 “综合案例”—— 结合前面学的输入输出、if、for、Sales_item类,编写一个 “处理多本图书销售记录的程序”,功能是:读取多本图书的销售记录,累加相同 ISBN 的销售数据,最终输出每本图书的总销售记录。
完整代码
#include<iostream>#include"Sales_item.h"usingnamespace std;intmain(){Sales_item total; // 存储第一本图书的销售记录(作为初始总记录)// 先读取第一本图书的记录if (cin >> total) {Sales_item trans; // 存储后续读取的每本图书的记录// 循环读取后续记录,直到输入结束(Ctrl+Z在Windows,Ctrl+D在Linux)while (cin >> trans) {// 若当前记录与总记录的ISBN相同,累加if (total.isbn() == trans.isbn()) {total += trans; // 等价于total = total + trans} else {// 若ISBN不同,先输出之前的总记录,再更新total为当前记录cout << total << endl;total = trans;}}// 输出最后一本图书的总记录(循环结束后,最后一个total未输出)cout << total << endl;} else {// 若未读取到任何记录,输出错误信息cerr << "没有输入任何销售记录!" << endl;return-1;}return0;}
程序逻辑解析
- 初始读取
:先用
if (cin >> total)读取第一本图书的记录 —— 若读取失败(如用户直接输入结束符),则输出错误信息并退出。 - 循环读取后续记录
:用
while (cin >> trans)循环读取后续记录 ——cin >> trans的返回值是cin本身,当cin遇到 “输入结束符”(Windows 下按Ctrl+Z,Linux 下按Ctrl+D)或 “输入错误” 时,会返回false,循环结束。 - 累加或输出
-
若
trans与total的 ISBN 相同:用total += trans累加销售数据。 -
若 ISBN 不同:先输出
total(之前累加好的某本图书的总记录),再将total更新为trans(开始处理下一本图书)。
-
- 输出最后一条记录
:循环结束后,最后一本图书的总记录还未输出,需单独
cout << total。
第一章核心总结
- 程序结构
C++ 程序必须有且仅有一个
main()函数,程序从main()开始执行,main()的返回值用于告知操作系统程序的执行状态(0 为成功,非 0 为失败)。 - 输入输出
std::cout(搭配
<<)用于输出,std::cin(搭配>>)用于输入。using namespace std;可简化标准库组件的使用,但大型项目需谨慎。
- 基础语法
-
语句必须以
;结尾。 -
注释用
//(单行)或/* ... */(多行)。 -
控制流:
if(分支)、for(循环)是最基础的控制语句。
-
- 类的初步认知
类是自定义类型,封装了数据和方法;使用类时,需包含对应的头文件,并通过对象调用类的方法或运算符。
更多推荐
所有评论(0)