《C++ Primer(第5版)》第一章习题 题干+分析+答案

写在前面

内容主要是自己写,遇到瓶颈时可能会参考一下git-hub上的标准答案,特此说明,请大家尊重知识产权。

第一章 开始

练习1.1~1.21

题目比较简单,就不说了。

练习1.22

题干

编写程序,读取多个具有相同 ISBN 的销售记录,输出所有记录的和。

分析

  • 有多条消息纪录,且没说有多少条,可以采用while实现不定量数据读取;
  • 除了定义类型时和书本前面的例题不同外,其余区别不大;
  • 有一点需要注意的是需要先读入一条纪录,否则输出会缺少ISBN;

源代码

#include <iostream>
#include "Sales_item.h"

using namespace std; 
int main(){
    
    
	Sales_item item,sum;
	cin >> sum; //先读入一条纪录
	while(cin >> item){
    
     //不定量数据的读入
		sum = sum + item; //求和
	} 
	cout << sum; //输出
	return 0;
}

练习 1.23/1.24

题干

1.23 编写程序,读取多条销售记录,并统计每个 ISBN(每本书)有几条销售记录。

1.24 输入表示多个 ISBN 的多条销售记录来测试上一个程序,每个 ISBN 的记录应该聚在一起。

分析

  • 1.23题目中没有说清楚 ,相同的ISBN是否是连续的?以我的理解应该是连续的,否则要用到更复杂的知识;
  • 可以参考书本前面的例题,区别不大;

源代码

#include <iostream>
#include "Sales_item.h"

using namespace std; 
int main(){
    
    
	Sales_item item1,item2;
	int sum=1;
	cin >> item1; //读入第一条纪录
	while(cin >> item2){
    
     //读入下一条纪录
		if(item1.isbn()==item2.isbn()){
    
     //isbn相等则加1计数
			sum++;
		}
		else{
    
     //isbn不等则输出结果,item1仍作为比较的参考,sum重新初始化
			cout << "ISBN: " << item1.isbn() << " has " << sum << "records;" << endl; 
			item1 = item2;
			sum = 1; 
		}
	}
	cout << "ISBN: " << item1.isbn() << " has " << sum << "records;" << endl; //输出最后一次的结果
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41754258/article/details/112424655