C++ PRIMER第五章课后练习
来源:互联网 发布:淘宝客单页模板 编辑:程序博客网 时间:2024/05/09 05:45
5.1
空语句只有一个单独的分号;
当语法上需要一条语句而逻辑上不需要的时候需要用到空语句
5.2
用花括号括起来的区域叫块,语法上需要一条语句,但逻辑上需要不止一条的时候用到块
5.3
vector<int>::size_type cnt=ivec.size(),ix=0;
while(ix!=ivec.size())
{
ivec[ix]=cnt;
++ix;
--cnt;
}
5.4
a)iter没有初始化
b)第2个status无法访问,已在作用域外
5.7
a)第2段结束少分号
b)语法没错误
c)第3段的ival无法访问
d)语法无错误,循环体恒为假, 改为if(ival==0)
5.8
有多个if和多个else分支的时候~~~规定else与离它最近的尚未匹配的if匹配;
5.9
int main()
{
char ch;
int vowelCnt = 0;
while (cin >> ch&&ch != '#')
if (ch == 'a' || ch == 'o' || ch == 'e' || ch == 'u' || ch == 'i')
++vowelCnt;
cout << vowelCnt << endl;
return 0;
}
5.10
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;
default:
break;
}
5.11
case ' ':case '\t':case '\n':
++sCnt;break;
5.12
//读取完毕再统计或者用库会更简单点
int main()
{
char ch;
int ffCnt, flCnt, fiCnt;
ffCnt = flCnt = fiCnt = 0;
while (cin >> ch&&ch != '#')
{
while ('f' == ch)
{
if (!(cin >> ch) || ch == '#')
break;
switch (ch)
{
case 'f':
++ffCnt; break;
case'l':
++flCnt; break;
case'i':
++fiCnt; break;
default:
break;
}
}
if ('#' == ch)
break;
}
cout << "Number of \"ff\":" << ffCnt << endl;
cout << "Number of \"fl\":" << flCnt << endl;
cout << "Number of \"fi\":" << fiCnt << endl;
return 0;
}
5.13
a)少break;
b)case 1里的ix,控制流可能会绕过显示初始化的变量,将int ix放在 swich前面
c)case1:case3:case5....
d)如果swt不等于这3个值,bufsize的值将不确定,加个default给bufsize赋值
5.14
int main()
{
string s,begins,max_count_s;
int count = 0, maxcount=0;
if (cin >> s)
{
count = 1;
begins = s;
while (cin >> s)
{
if (s == begins)
++count;
else
{
if (count > maxcount)
{
max_count_s =begins;
maxcount = count;
}
count = 1;
begins = s;
}
}
//加这个if以防忽略最后结束输入时连续的单词
if (count > maxcount)
{
max_count_s = begins;
maxcount = count;
}
}
cout << maxcount << "个连续" << max_count_s << endl;
return 0;
}
5.15
a)if里的ix未声明,将 int ix放在for之前
b)ix未初始化,int ix=0;
c)死循环,--sz
5.17
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v1{ 0,0,1,1 };
vector<int> v2{ 0,0,1,1,2,2 };
auto it1 = v1.begin(), it2 = v2.begin();
bool flag = 1;
for (; it1 != v1.end(); ++it1, ++it2)
if (*it1 != *it2)
{
flag = 0;
break;
}
if (flag)
cout << "v1是v2的前缀\n";
else
cout<< "v1不是v2的前缀\n";
return 0;
}
5.18
a)do到while之间需要花括号
b)while里的判断语句=应该改为==
c)应该没什么意义,会死循环吧
5.19
int main()
{
string s1, s2;
do {
cin >> s1 >> s2;
if (s1.size() < s2.size())
cout << s1 << endl;
else if (s1.size() > s2.size())
cout << s2 << endl;
else
cout << "长度相等\n";
} while (cin);
return 0;
}
5.20
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1, s2;
bool flag = 1;
cin >> s1;
s2 = s1;
while (cin >> s1)
{
if (s2 == s1)
{
flag = 0;
cout << s1 << "连续出现\n";
break;
}
s2 = s1;
}
if (flag)
cout << "没有任何单词是连续出现的\n";
return 0;
}
5.22
int sz=get_size();
while(sz<=0)
sz=get_size();
5.23
int main()
{
int i, j;
double result = 0;
cin >> i >> j;
try {
if (0 == j)
throw range_error("除数不能为0");
result = i / j;
cout << result << endl;
}
catch (range_error& rerr)
{
cout << rerr.what()<<endl;
cout << "j不能为0\n";
}
return 0;
}
5.24
abort() has been called
5.25
int main()
{
int i, j;
double result = 0;
char ch;
while (cin >> i >> j)
{
try {
if (0 == j)
throw range_error("除数不能为0");
result = 1.0*i / j;
cout << i<<"/"<<j<<"="<<result << endl;
cout << "继续输入2个整数:\n";
}
catch (range_error& rerr)
{
cout << rerr.what() << endl;
cout << "j不能为0\n";
cout << "是否重新输入新数(y继续):";
cin.get();
if ((ch = cin.get()) == 'y')
{
cout << "重新输入2个整数:\n";
continue;
}
break;
}
}
return 0;
}
- c++primer第五版课后练习答案(第五章)
- c++primer第五版课后练习答案(第三章)
- c++primer第五版课后练习答案(第九章)
- c++primer第五版课后练习答案(第十章)
- c++primer第五版课后练习答案(第六章)
- C Primer Plus 第五版 课后练习
- 学习C++Primer第五版,课后练习。
- C++ PRIMER第五章课后练习
- c++primer第五版课后练习答案(第一章)
- C++PRIMER第三章课后练习
- C++PRIMER第十章课后练习
- C++Primer 中文版 第五版 第五章课后习题答案
- c++primer 第五版课后习题 第五章
- c++primer第五版第九章练习
- c++primer第五版第八章练习
- c++primer第五版第七章练习
- c++primer第五版第六章练习
- c++primer第五版第十章练习
- window.requestAnimFrame 以及Polyfill
- 第三章
- 手把手教你Adobe Acrobat Pro DC 2017中文版的官网下载、安装与注册机激活教程
- 软件工程
- 布隆过滤器(Bloom Filter)
- C++ PRIMER第五章课后练习
- 间接寻址的基本及其应用(实验2.4)
- 训练集--群赛17
- 星期
- Cookie(一)
- 【牛腩新闻发布系统】--初识牛腩
- jeesite跨域访问接口
- Python3 迭代器与生成器
- linux intel SGX 安装