c++程序设计原理与实践第四章课后答案Word下载.docx
《c++程序设计原理与实践第四章课后答案Word下载.docx》由会员分享,可在线阅读,更多相关《c++程序设计原理与实践第四章课后答案Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
doublemax;
doublemin;
请您输入一组距离:
dist)
dists.push_back(dist);
for(inti=0;
i<
dists.size();
i++)
sum+=dists[i];
sort(dists.begin(),dists.end());
//利用标准函数库algorithm的sort函数对向量进行升序排列,
//找出最大数。
总距离为:
sum<
最小距离为:
dists[0]<
最大距离为:
dists[dists.size()-1]<
平均距离为:
sum/dists.size()<
Vc6.0环境下运行结果如下:
4.
#include<
cstdlib>
time.h>
intn,N;
srand(time(0));
//取当前时间为种子,确保每次产生的随机数不一样。
N=1+rand()%100;
//产生1-100的随机数。
系统已经为您生成了一个(1~100)的随机数,有趣的猜数字之旅现在开始(^_^)"
8;
)
i+=1;
cout<
请输入您猜的数字:
"
cin>
n;
if(n==N&
&
=7)
{
cout<
恭喜你,答对了!
,你真聪明(^_^)"
break;
}
n<
15&
n>
7)
{cout<
我敢说你可以做的更好!
break;
}
if(i==7)
很遗憾!
你没有猜出来,请再接再厉。
正确答案是:
N<
if(n<
N)
您的数字比系统给定的数字小,请您继续猜."
if(n>
您的数字比系统给定的数字大,请继续猜."
if(n!
=N)
continue;
Vc6.0环境下运行结果如图:
5.
inlinevoidkeep_window_open(){charch;
cin>
ch;
doublea;
intk;
doubleb;
charopreator;
doubleresult;
输入任意字符开始,输入q退出(^_^)"
k)
if(k=='
q'
)exit(0);
请您输入三个参数:
a>
b;
opreator;
switch(opreator)
{case'
+'
:
result=a+b;
运算结果为:
a"
opreator<
b="
result<
break;
case'
*'
result=a*b;
-'
result=a-b;
/'
if(b==0)cout<
数据不合法,不能做除法操作,请重新输入:
else{result=a/b;
%'
if(a-(int)a!
=0||b-(int)b!
=0)cout<
数据不合法,不能做取余操作,请重新输入:
//判断不是整数不能取余操作。
default:
参数没有对应的操作!
输入任意字符继续,输入q退出(^_^)"
keep_window_open();
6.
string>
intn;
charc;
stringstr;
numbs(10);
numbs[0]="
zero"
numbs[1]="
one"
numbs[2]="
two"
numbs[3]="
three"
numbs[4]="
four"
numbs[5]="
five"
numbs[6]="
six"
numbs[7]="
seven"
numbs[8]="
eight"
numbs[9]="
nine"
如果您想输入数字,请输入'
s'
如果您想输入单词,请输入'
w'
.退出请输入'
c)
if(c=='
)exit(0);
switch(c)
请输入您要转换的数字(0~9):
switch(n)
case0:
对应的英文单词是'
zero'
case1:
one'
case2:
two'
case3:
three'
case4:
four'
case5:
five'
case6:
six'
case7:
seven'
case8:
eight'
case9:
nine'
没有对应的单词!
}break;
请输入您要转换的英语单词(zero~nine):
str;
if(str=="
)cout<
str<
对应的阿拉伯数字是'
0'
elseif(str=="
1'
2'
3'
4'
5'
6'
7'
8'
9'
没有对应选项!
7.
intk,a2,b2;
charopreator,c;
stringa1,b1;
doubleoperate(doublea,doubleb,charopreator);
doublechange(stringx);
if(k=='
如果想进行数字操作,请输入'
n'
如果想进行英文形式的操作,请输入'
c;
result=operate(a,b,opreator);
a<
b<
="
a1>
b1;
a2=change(a1);
b2=change(b1);
result=operate(a2,b2,opreator);
a1<
b1<
没有满足您输入的操作!
doubleoperate(doublea,doubleb,charopreator)
if(b==0){cout<
数据不合法,不能做除法操作,请重新输入!
exit(0);
elseresult=a/b;
returnresult;
doublechange(stringx)
doublec;
if(x=="
)c=0;
elseif(x=="
)c=1;
elseif(x=="
)c=2;
elseif(x=="
)c=3;
elseif(x=="
)c=4;
elseif(x=="
)c=5;
elseif(x=="
)c=6;
elseif(x=="
)c=7;
elseif(x=="
)c=8;
)c=9;
returnc;
8.
cmath>
inti=1,n,sum=0;
请您输入米的数量:
n)
if(n=='
while(sum<
=n)
sum+=pow(2,i-1);
格子数:
每次米的数量:
i+=1;
i=1;
//重新对i和sum赋值,以便进行下一次计算。
sum=0;
输入'
结束,请您输入米的数量:
Vc6.0环境下运行结果如下图:
9.
inti;
for(i=1;
=64;
Vc6.0环境下运行情况如下:
10.
tchar.h>
//unicode中_tmain()的头文件。
stdlib.h>
//随机数头文件。
conio.h>
//控制台输入输出,getch()的头文件。
unix和linux通常没有这个头文件,要自己加载。
iomanip>
intmun_eqv=0;
//用于记录平局数
intmun_cpt=0;
//记录电脑胜利局数
intmun_men=0;
//记录用户胜利局数
intcpt;
//电脑出的随机数。
};
//电脑随机出现1,2,3,与人的输入(r,s,c分别表示石,头剪,刀布)进行比较,得出输赢结果。
最后统计结果。
//i表示帮助g表示查看结果q退出游戏
//实现步骤
intcomputer()
{
srand((unsigned)time(NULL));
returnrand()%3;
}
voidstar()
mun_eqv=0;
mun_cpt=0;
intmun_men=0;
现在开始!
请出招吧!
voidanswer()//判断最后的输赢
endl<
总下了"
mun_men+mun_cpt+mun_eqv<
局"
其中,"
mun_eqv<
平局"
//cout<
人比电脑:
+mun_men+"
比"
+mun_cpt+"
;
+mun_eqv+"
平"
mun_men<
mun_cpt<
if(mun_cpt==mun_men)
{
平局,彼此彼此!
}
elseif(mun_cpt<
mun_men)
祝贺你取得胜利,什么时候请客呀!
else
胜负及兵家常事,回去修炼几年再来吧!
voidwork(charyou,inthim)//9种情况讨论
if(you=='
r'
him==0)
setw(10)<
石头对石头"
平局!
我们彼此彼此吧?
mun_eqv++;
elseif(you=='
him==1)
剪刀对剪刀"
c'
him==2)
布对布"
天呀,你的石头,我的剪刀!
你胜了"
mun_men++;
天呀,你的剪刀剪我的布!
你胜了,谢谢刀下留情!
天呀,你的布包我的石头!
怎么样,石头同志,尝过我布的利害了吧?
你输了,还敢再来吗?
mun_cpt++;
怎么样,布布同志,尝过我剪刀的利害了吧?
怎么样,剪刀同志,我的石头你也敢来?
voidhelp()
石头剪刀布游戏"
用户按“r”(Rock)表示石头,“s”(Scissors)表示剪刀,“c”(Cloth)表示布,“b”(begin)表示开始,“i”(Instruction)表示查看帮助,“g”(game)表示查看结果,“q”(Quit)表示退出。
当游戏开始后,按R、S、C进行人机游戏。
游戏规则:
布包石头,石头碰剪刀,剪刀剪布为胜利,"
如果出的是同样的,比如同是石头,则平局。
int_tmain(intargc,_TCHAR*argv[])
booly=true;
help();
star();
while(y)
charb;
b=getch();
switch(b)
case'
cpt=computer();
work(b,cpt);
b'
i'
g'
answer();
exit
(1);
return0;
Vc6.0环境下的运行情况如图:
11.