cprimer第5版答案.docx
- 文档编号:27942548
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:14
- 大小:17.94KB
cprimer第5版答案.docx
《cprimer第5版答案.docx》由会员分享,可在线阅读,更多相关《cprimer第5版答案.docx(14页珍藏版)》请在冰豆网上搜索。
cprimer第5版答案
cprimer第5版答案
【篇一:
c++primer第五版第五章习题答案】
s=txt>5.1
单独一个分号为空语句
比如当循环的工作在条件部分完成时。
5.2
复合语句花括号
语法要求一语句,逻辑要求多语句
5.3
5.4
(a)感觉可以
(b)赋值肯定为真而且status作用域也有问题
5.5
#includeiostream
#includevector
#includestring
usingnamespacestd;
constvectorstringscores={f,d,c,b,a,a++};
intgrade;
strings_grade;
intmain()
{
while(cingrade)
{
if(grade60)
s_grade=scores[0];
else
s_grade=scores[(grade-50)/10];
if
(grade!
=100)
if(grade%107)
s_grade+=+;
elseif(grade%103)
s_grade+=-;
couts_gradeendl;
}
}
5.6
#includeiostream
#includevector
#includestring
usingnamespacestd;
constvectorstringscores={f,d,c,b,a,a++};
intgrade;
strings_grade;
intmain()
{
while(cingrade)
{
grade60?
s_grade=scores[0]:
s_grade=scores[(grade-50)/10];
if(grade!
=100)
(grade%10)7?
s_grade+=+:
(grade%103)?
s_grade+=-:
s_grade+=;}
}
5.7
(a)分号落了。
(b)本意应该是要把if后面两句{}一下把
(c)i的作用域有问题把第二个if改为else
(d)=改成==,要是=直接把if去掉好了。
5.8
if比else多
c++规定else和最近的if匹配来解决
5.9
5.10
5.9已经考虑到大写了
5.11,5.12
#includeiostream
#includevector
#includestring
usingnamespacestd;
unsignedintvowel_cnt,space_cnt,tab_cnt,enter_cnt,ff_cnt,fl_cnt,fi_cnt;charalphabet;
vectorchartemp;
intmain()
{
while(cinalphabetalphabet!
=999)
{
temp.push_back(alphabet);
}
for(unsignedinti=0;itemp.size();++i)
{
if(temp[i]==a||temp[i]==e
||temp[i]==i||temp[i]==o||temp[i]==u||temp
[i]==a||temp[i]==e||temp[i]==i||temp[i]==o||temp[i]==u)
++vowel_cnt;
elseif(temp[i]==)
++space_cnt;
elseif(temp[i]==\t)
++tab_cnt;
elseif(temp[i]==\n)
++enter_cnt;
elseif(temp[i]==ftemp[i+1]==f)
++ff_cnt;
elseif(temp[i]==ftemp[i+1]==i)
++fi_cnt;
elseif(temp[i]==ftemp[i+1]==l)
++fl_cnt;
else
break;
}
coutvowel_cntendlspace_cntendltab_cntendlenter_cntendlff_cntendlfi_cntendlfl_cnt;
}
以上代码可以统计元音数量和fl,fi,ff的数量但统计不了空格换行和制表符原因是这些符号不会被存到向量中....囧,重点应该不能用whiel(in)感觉,因为输入流会跳过空格,
换行,制表等。
改成如下版本可以满足要求.
#includefstream
#includeiostream
#includevector
#includeiomanip
usingnamespacestd;
unsignedintvowel_cnt,space_cnt,tab_cnt,enter_cnt,ff_cnt,fl_cnt,fi_cnt;charalphabet;
vectorchartemp;
intmain()
{
ifstreamin(新建文本文档.txt);//readfile
if(!
in)
{
cerrsomeerrorshappened;
return-1;
}
while(in.get(alphabet))
{
coutalphabet;
temp.push_back(alphabet);
}
coutendl;
for(unsignedinti=0;itemp.size();++i)
{
if(temp[i]==a||temp[i]==e||temp[i]==i||temp[i]==o||temp[i]==u||temp
[i]==a||temp[i]==e||temp[i]==i||temp[i]==o||temp[i]==u)
++vowel_cnt;
elseif(temp[i]==)
++space_cnt;
elseif(temp[i]==\t)
++tab_cnt;
elseif(temp[i]==\n)
++enter_cnt;
elseif(temp[i]==ftemp[i+1]==f)
++ff_cnt;
elseif(temp[i]==ftemp[i+1]==i)
++fi_cnt;
elseif(temp[i]==ftemp[i+1]==l)
++fl_cnt;
else
;
}
coutvowel_cntendlspace_cntendltab_cntendlenter_cntendlff_cntendlfi_cntendlfl_cnt;
}
如图有12个元音,7个空格,2换行4制表(aeiou后面还有制表符哈)2个fi3个fl
txt文档如下图
5.13
(a)少break
(b)ix在cass1中定义,若跳过cass1,则在default中会出错
(c)digit=0怎么弄
(d)标签不是一个常量
5.14
#includeiostream
#includevector
#includestring
usingnamespacestd;
vectorstringtemps;
intmain()
{个ff1
【篇二:
c++primer第五版第三章习题答案】
t>3.1
加using声明就重做,不必了吧!
!
3.2
3.3
getline跳过空格继续读下一个字符,不忽略行开头的空格
string类的输入运算符忽略有效字符前的空格,直到再次遇到空格
3.4
3.5
3.6(关于范围for语句的内容,由于我用的vs2010不支持,所以只有代码,没有运行结果)#includeiostream
#includestring
usingnamespacestd;
intmain()
{
strings(helloworld);
for(autoc:
s)
c=‘x’;
coutsendl;
}
3.7
感觉应该可以,毕竟string由n多char组成
试验无法试验!
!
3.8
用for感觉好一些毕竟范围的头尾很明确
3.9空字符串s的s[0]!
!
错误
3.10
3.11
个人感觉合法类型为constchar因为是引用不是const的话改变会改变s的值而s为const不能改变
3.12
(a)(c)正确(b)错误类型不匹配
3.13
(a)空的(b)10个空0(c)10个42(d)1个10(e)10和422个(f)10个string因为10不是string无法用来列表初始化
(g)10个hi
3.
14
【篇三:
cprimerplus第五版课后编程练习答案完整】
)
第一章概览
编程练习
1.您刚刚被macromuscle有限公司(softwareforhardbodies)聘用。
该公司要进入欧洲市场,需要一个将英寸转换为厘米(1英寸=2.54cm)的程序。
他们希望建立的该程序可提示用户输入英寸值。
您的工作是定义程序目标并设计该程序(编程过程的第1步和第2步)。
1.将英寸值转化为厘米值
2.显示“输入英寸值”-得到该值-转换为厘米值-存储-告知用户已结束
第二章c语言概述
编程练习
1.编写一个程序,调用printf()函数在一行上输出您的名和姓,再调用一次printf()函数在两个单独的行上输出您的名和姓,然后调用一对printf()函数在一行上输出您的名和姓。
输出应如下所示(当然里面要换成您的姓名):
antonbruckner
anton
bruckner
antonbruckner
第一个输出语句
第二个输出语句
仍然是第二个输出语句
第三个和第四个输出语句
#includestdio.h
intmain(void)
printf(hejin\n);
printf(he\n);
printf(jin\n);
printf(hejin\n);
return(0);
}
2.编写一个程序输出您的姓名及地址。
#includestdio.h
intmain(void)
{
printf(name:
hejin\n);
printf(address:
cauc\n);
return(0);
}
3.编写一个程序,把您的年龄转换成天数并显示二者的值。
不用考虑平年(fractionalyear)和闰年(leapyear)的问题。
#includestdio.h
intmain(void)
{
intage=22;
printf(age:
%d\n,age);
printf(day:
%d\n,age*356);
return(0);
}
4.编写一个能够产生下面输出的程序:
forhesajollygoodfellow!
forhesajollygoodfellow!
forhesajollygoodfellow!
whichnobodycandeny!
程序中除了main()函数之外,要使用两个用户定义的函数:
一个用于把上面的夸奖消息输出一次:
另一个用于把最后一行输出一次。
#includestdio.h
voidprintf1(void);
voidprintf2(void);
intmain(void)
{
printf1();
printf1();
printf1();
printf2();
return(0);
}
voidprintf1(void)
{
printf(forhesajollygoodfellow!
\n);
}
voidprintf2(void)
{
printf(whichnobodycandeny!
\n);
}
5.编写一个程序,创建一个名为toes的整数变量。
让程序把toes设置为10。
再让程序计算两个toes的和以及toes的平方。
程序应该输出所有的3个值,并分别标识它们。
#includestdio.h
intmain(void)
{
inttoes=10;
inttoes_add;
inttoes_square;
toes_add=toes+toes;
toes_square=toes*toes;
printf(toes=%d\ntoes_add=%d\ntoes_square=%d\n,toes,toes_add,toes_square);return(0);
}
6.编写一个能够产生下列输出的程序:
smile!
smile!
smile
smile!
smile!
smile!
在程序中定义一个能显示字符串smile卜一次的函数,并在需要时使用该函数。
#includestdio.h
voiddisplay(void);
intmain(void)
{
display();
display();
display();
printf(\n);
display();
display();
printf(\n);
display();
printf(\n);
return(0);
}
voiddisplay(void)
{
printf(smile!
);
}
7.编写一个程序,程序中要调用名为one_three()的函数。
该函数要在一行中显示单词one,再调用two()函数,然后再在另一行中显示单词three。
函数two()应该能在一行中显示单词two。
main()函数应该在调用one_three()函数之前显示短语startingnow:
,函数调用之后要显示done!
o这样,最后的输出结果应如下所示:
startingnow
one
two
three
done!
#includestdio.h
voidone_three(void);
voidtwo(void);
intmain(void)
{
printf(startingnow:
\n);
one_three();
printf(done!
\n);
return(0);
}
voidone_three(void)
{
printf(one\n);
two();
printf(three\n);
}
voidtwo(void)
{
printf(two\n);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cprimer 答案