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