C++ primer 第五版 第五章练习答案

5.3

#include<iostream>
int main() {
	int val = 1,sum=0;
	while (val <= 10) {
		sum += val;
		++val;
	}
	std::cout << sum;
}

5.5

 #include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
	const vector<string> scores = { "F","D","C","B","A","A++" };
	int grade = 0;
	while (cin >> grade) {
		if (grade == 100) {
			cout << scores[5] << endl;
		}
		else {
			if (grade >= 90) {
				cout << scores[4] << endl;
			}
			else {
				if (grade >= 80) {
					cout << scores[3] << endl;
				}
				else {
					if (grade >= 70) {
						cout << scores[2] << endl;
					}
					else {
						if (grade >= 60) {
							cout << scores[1] << endl;
						}
						else {
							cout << scores[0] << endl;
						}
					}
				}
			}
		}
	}
}

5.6
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
	int grade;
	cin >> grade;
	cout << ((grade == 100) ? ("A++") : (grade >= 90) ? ("A") : (grade >= 80) ? ("B") : (grade >= 70) ? ("C") : (grade >= 60) ? ("D") : ("F"));
}

5.7

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
	int ival = 0;
	if (cin >> ival) {
		cout << ival << endl;
		if (!ival) {
			cout << "ival=0" << endl;
		}
	}
}

5.9

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
	string text = "";
	cin >> text;
	int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
	for (auto q : text) {
		if (q == 'a') {
			++aCnt;
		}
		else {
			if (q == 'e') {
				++eCnt;
			}
			else {
				if (q == 'i') {
					++iCnt;
				}
				else {
					if (q == 'o') {
						++oCnt;
					}
					else {
						if (q == 'u') {
							++uCnt;
						}
					}
				}
			}
		}
	}cout << "文档中存在 a " << aCnt << "个" << endl;
	cout << "文档中存在 e " << eCnt << "个" << endl;
	cout << "文档中存在 i " << iCnt << "个" << endl;
	cout << "文档中存在 o " << oCnt << "个" << endl;
	cout << "文档中存在 u " << uCnt << "个" << endl;
}

5.10

#include<iostream>
#include<string>
using namespace std;
int main() {
	string text = "";
	char ch;
	int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
	while(cin>>ch){
		switch (ch) {
		case 'a':
		case'A':
			++aCnt;
			break;
		case'e':
case'E':
			++eCnt;
			break;
		case'i':
  		case'I':
			++iCnt;
			break;
		case 'o':
case'O':
			++oCnt;
			break;
		case'u':
case'U':
			++uCnt;
			break;

		}
	}cout << "Number of vowel a   " << aCnt<<endl;
	cout << "Number of vowel e   " << eCnt<<endl;
	cout << "Number of vowel i    " << iCnt<<endl;
	cout << "Number of vowel o    " << oCnt<<endl;
	cout << "Number of vowel u    " << uCnt<<endl;
}

5.11

#include<iostream>
#include<string>
using namespace std;
int main() {
	string text = "";
	char ch;
	int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0,space_Cnt=0,nCnt=0,tCnt=0;
	while (cin >> std::noskipws>> ch) {
		switch (ch) {
		case 'a':
		case'A':
			++aCnt;
			break;
		case'e':
		case'E':
			++eCnt;
			break;
		case'i':
		case'I':
			++iCnt;
			break;
		case 'o':
		case'O':
			++oCnt;
			break;
		case'u':
		case'U':
			++uCnt;
			break;
		case' ':
			++space_Cnt;
			break;
		case'\n':
			++nCnt;
			break;
		case'\t':
			++tCnt;
			break;

		}
	}cout << "元音 a(A)数量为   " << aCnt << endl;
	cout << "元音 e(E)数量为   " << eCnt << endl;
	cout << "元音 i(I)数量为    " << iCnt << endl;
	cout << "元音 o(O)数量为    " << oCnt << endl;
	cout << "元音 u(U)数量为    " << uCnt << endl;
	cout << "空格数量为    " << space_Cnt << endl;
	cout << "回车符数量为     " << nCnt << endl;
	cout << "制表符数量为     " << tCnt << endl;
}

5.12

#include<iostream>
#include<string>
using namespace std;
int main() {
	string text = "";
	char ch,prech='\0';
	int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0, space_Cnt = 0, nCnt = 0, tCnt = 0;
	int ffCnt = 0, flCnt = 0, fiCnt = 0;
	while (cin >> std::noskipws >> ch) {
		switch (ch) {
		case 'a':
		case'A':
			++aCnt;
			break;
		case'e':
		case'E':
			++eCnt;
			break;
		case'i':
			if (prech == 'f') {
				++fiCnt;
			}
			++iCnt;
			break;
		case'I':
			++iCnt;
			break;
		case 'o':
		case'O':
			++oCnt;
			break;
		case'u':
		case'U':
			++uCnt;
			break;
		case' ':
			++space_Cnt;
			break;
		case'\n':
			++nCnt;
			break;
		case'\t':
			++tCnt;
			break;
		case'f':
			if (prech == 'f') {
				++ffCnt;
			}
			break;
		case'l':
			if (prech == 'f') {
				++flCnt;
			}
			break;
		
		}prech = ch;
		
	}cout << "元音 a(A)数量为   " << aCnt << endl;
	cout << "元音 e(E)数量为   " << eCnt << endl;
	cout << "元音 i(I)数量为    " << iCnt << endl;
	cout << "元音 o(O)数量为    " << oCnt << endl;
	cout << "元音 u(U)数量为    " << uCnt << endl;
	cout << "空格数量为    " << space_Cnt << endl;
	cout << "回车符数量为     " << nCnt << endl;
	cout << "制表符数量为     " << tCnt << endl;
	cout << "fl数量为      " << flCnt << endl;
	cout << "fi数量为       " << fiCnt << endl;
	cout << "ff数量为      " << ffCnt << endl;
}

5.14

#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
int main() {
	int Cnt = 1, maxCnt = 1;
	string name = "";
	string text = "";
	string ttee = "";
	cin >> text;
	while (cin >> ttee) {
		if (ttee == text) {
			++Cnt;
		}
		else {
			if (Cnt > maxCnt) {
				name = text;
				maxCnt = Cnt;
			}
			else {
				if (Cnt == maxCnt) {
					name += "  and  "+text;
					maxCnt = Cnt;
				}
			}
			text = ttee;
			Cnt = 1;
		}
	}
	if (Cnt > maxCnt) {
		name = text;
		maxCnt = Cnt;
	}
	else {
		if (Cnt == maxCnt) {
			name += "  and  "+text;
			maxCnt = Cnt;
		}
	}
	if (name == "") {
		cout << "没有连续出现的单词" << endl;
	}
	else {
		cout << name << "连续出现" << maxCnt << "次" << endl;
	}
}

5.16

1----while

#include<iostream>
#include<vector>
using namespace std;
int main() {
	int v = 0;
	vector<int>ivec;
	while (cin >> v) {
		ivec.push_back(v);
	}
	for (auto q : ivec) {
		cout << q << endl;
	}
}


2----for

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
	int n = 0;
	cin >> n;
	vector<int>ivec;
	int m = 0;
	for (int i = 0; i <= n; ++i) {
		cin >> m;
		ivec.push_back(m);
	}
	for (auto q : ivec) {
		cout << q << endl;
	}
}
FOR循环统计输入并计入VECTOR,打包输出


5.17

#include<vector>
#include<iostream>
using namespace std;
int main() {
	vector<int>ivec1 = { 0,1,2,3 };
	vector<int>ivec2 = { 2,6,5,0,1,3 };
	int n1 = ivec1.size();
	int n2 = ivec2.size();
	bool flag = false;
	if (n1 == n2) {
		cout << "不存在相互嵌套" << endl;
	}
	else {
		if (n1 > n2) {
			for (auto q : ivec2) {
				flag = false;
				for (auto l : ivec1) {
					if (l == q) {
						flag = true;
					}
				}if (flag == false)break;
			}if (flag == false) {
				cout << "短对象不是长对象的前缀" << endl;
			}
			else {
				cout << "短对象是长对象的前缀" << endl;
			}
		}
		else {
			for (auto q : ivec1) {
				flag = false;
				for (auto l : ivec2) {
					if (l == q) {
						flag = true;
					}
				}if (flag == false)break;
			}if (flag == false) {
				cout << "短对象不是长对象的前缀" << endl;
			}
			else {
				cout << "短对象是长对象的前缀" << endl;
			}
			
		}
	}
}

5.19

#include<iostream>
#include<string>
using namespace std;
int main() {
	do {
		cout << "请输入两个string字符串" << endl;
		string text1 = "", text2 = "";
		if (cin >> text1 >> text2) {
			if (text1.size() > text2.size()) {
				cout << "较短的字符串为" << text2<<endl;
			}
			else {
				cout << "较短的字符串为" << text1<<endl;
			}
		}
	} while (cin);
}

5.20

#include<iostream>
#include<string>
using namespace std;
int main() {
	string text;//当成现在的输入
	string text0;//当成原来的输入
	cin >> text0;
	bool flag = true;
	while (cin >> text) {
		if (text == text0) { 
			cout << "单词" << text << "重复出现" << endl;
			flag = false;
			break; }
		else {
			text0 = text;
		}
	}if (flag == true) {
		cout << "没有单词重复出现" << endl;
	}
}

5.21

#include<iostream>
#include<string>
using namespace std;//找到的重复单词必须大写字母开头
int main() {
	string text;//当成现在的输入
	string text0;//当成原来的输入
	cin >> text0;
	bool flag = true;
	while (cin >> text) {
		char t0 = text[0];
		if (t0 >= 97 && t0 <= 122) {
			text0 = text;
			continue;
		}
		if (text == text0) { 
			cout << "单词" << text << "重复出现" << endl;
			flag = false;
			break; }
		else {
			text0 = text;
		}
	}if (flag == true) {
		cout << "没有单词重复出现" << endl;
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值