「C ++入門書(第5版)」第1章演習+分析+回答

前に書く

内容は主に自分で書いたものですが、ボトルネックが発生した場合は、git-hubの標準回答を参考にしてください。知的財産権を尊重してください。

第1章が始まります

演習1.1〜1.21

トピックは比較的単純なので、ここでは説明しません。

演習1.22

質問の語幹

同じISBNで複数の販売レコードを読み取り、すべてのレコードの合計を出力するプログラムを作成します。

分析

  • 複数のメッセージレコードがあり、その数は言われていませんが、非定量的データの読み取りを実現するために使用できます。
  • タイプの定義と本の前にあるサンプルの質問の違いを除いて、残りはそれほど違いはありません。
  • 注意すべき点の1つは、最初レコードを読み込む必要あることです。そうしないと、出力に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