您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++程序设计(第二版)钱能-第2章--基本编程语句
第2章基本编程语句2.9练习2(Exercises2)1.对运行中输入的x,计算级数:2311+x(1)2!3!!nnxxxn将所有绝对值不小于10-8的数都计入在内,要求输入精度为10-8。分别用for和while语句各编写一个程序。解答:/*for语句*/#includeiostream#includecmathusingnamespacestd;intmain(){intx,flag;intdenominator,numerator;doubleitem=1.0,sum=0;cinx;for(inti=0;item=1.0e-8;i++){numerator=pow(x,i);if(i==0||i==1){denominator=1;flag=1;}else{denominator*=i;flag=-flag;}item=1.0*numerator/denominator;sum+=flag*item;}coutsumendl;return0;}/*while语句*/#includeiostream#includecmathusingnamespacestd;intmain(){intx,flag;intdenominator,numerator,i=0;doubleitem=1.0,sum=0;cinx;while(item=1.0e-8){numerator=pow(x,i);if(i==0||i==1){denominator=1;flag=1;}else{denominator*=i;flag=-flag;}item=1.0*numerator/denominator;sum+=flag*item;i++;}coutsumendl;return0;}2.编程求1!+2!+3!+4!+…+12!,并试着简化程序。解答:#includeiostreamintmain(){longlongsum=0,item=1;for(inti=1;i=12;i++){item*=i;sum+=item;}std::coutsum;return0;}3.编程求所有的“水仙花数(narcissusnumber)”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为333153153。解答:#includeiostream#includecmathusingnamespacestd;boolSX(intbegin){inttemp=begin,s=0,n=1;while(temp=temp/10)n++;if(n3||n3)returnfalse;for(temp=begin;temp;temp=temp/10)s+=pow(temp%10,n);return(s==begin);}intmain(){intbegin,end;cout请输入起点:;cinbegin;cout请输入终点:;cinend;coutbegin-end之间的水仙数有:endl;for(inti=begin;i=end;i++)if(SX(i))coutiendl;system(pause);return0;}4.编程求1000之内的所有“完数”。所谓“完数”是指一个数恰好等于它的包括1在内的所有不同因子之和。例如,6是完数,因为6=1+2+3.解答:#includeiostream#includecmathusingnamespacestd;intmain(){for(inti=1;i=1000;i++){intsum=0;for(intj=1;j=i/2;j++)if(i%j==0)sum+=j;if(sum==i&&i!=1)coutiendl;}return0;}5.编程求所有的3位素数,且该数是对称的。所谓“对称”是指一个数,倒过来还是该数。例如,375不是对称数,因为倒过来变成了573。解答:#includeiostream#includecmathusingnamespacestd;boolSX(intbegin){inttemp=begin,s=0,n=1;while(temp=temp/10)n++;if(n3||n3)returnfalse;if(begin%10==begin/10/10){for(inti=2;i=sqrt(begin);i++)if(begin%i==0)returnfalse;if(begin!=1)returntrue;}elsereturnfalse;}intmain(){intbegin,end;cout请输入起点:;cinbegin;cout请输入终点:;cinend;coutbegin-end之间的对称素数有:endl;for(inti=begin;i=end;i++)if(SX(i))coutiendl;system(pause);return0;}6.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第10天早上想再吃时,见只剩下一个桃子了。试编程求第一天共摘下多少桃子。解答:#includeiostreamusingnamespacestd;intmain(){intpeach=1;for(inti=1;i10;i++)peach=2*peach+1;coutpeachendl;return0;}7.用循环语句编程打印如下图案:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%解答:#includeiostream#includecmathusingnamespacestd;intmain(){for(inti=0;i19;i++){for(intk=0;k=abs(9-i);k++)cout;for(intj=0;j19-2*abs(9-i);j++)cout%;coutstd::endl;}return0;}8.用循环语句编程打印如下图案:(1)#$(2)STSTSTSTSTSTSTSTSTS##$$STSTSTSTSTSTSTSTS###$$$STSTSTSTSTSTSTS####$$$$STSTSTSTSTSTS#####$$$$$STSTSTSTSTS######$$$$$$STSTSTSTS#######$$$$$$$STSTSTS########$$$$$$$$STSTS#########$$$$$$$$$STS##########$$$$$$$$$$S解答:(1)#includeiostreamusingnamespacestd;intmain(){for(inti=0;i10;i++){for(intk=0;k9-i;k++)cout;for(intj=0;j=i;j++)cout#;cout;for(intm=0;m=i;m++)cout$;coutendl;}return0;}(2)#includeiostreamusingnamespacestd;intmain(){for(inti=0;i19;i++){for(intj=0;ji;j++)cout;for(intk=0;k19-2*i;k++)if(k%2==0)coutS;elsecoutT;coutendl;}return0;}9.编程求解母牛问题。若一头母牛,从出生起第四个年头开始每年生一头母牛,此规律,第n年时有多少头母牛?解答:#includeiostreamusingnamespacestd;intcow(intn){if(n4)return1;elsereturncow(n-1)+cow(n-3);}intmain(){intyear;cout请输入第几年:;cinyear;cout第year年时有cow(year)头母牛。endl;return0;}10.一球从100米高度落下,每次落地后跳回原高度的一半,再落下。编程求它在第10次落地时,共经过距离为多少米?第10次落地后的反弹有多高?解答:#includeiostreamusingnamespacestd;intmain(void){doubledistance=0,height=100;for(inti=1;i=10;i++){height=height/2;distance+=3*height;}cout第10次落地时,共经过距离为distance.endl;cout第10次落地后的反弹高度为height.endl;return0;}11.将100元钱兑换成10元、5元、1元,编程求不同的兑换法。要求每种兑法中都要有10元、5元和1元。解答:#includeiostream#includeiomanipusingnamespacestd;intmain(){intcount=0;for(inti=1;i=9;i++)for(intj=1;j=18;j++)for(intk=1;k=85;k++)if(10*i+5*j+k==100)cout第setw(2)setfill('')++count种兑法中,10元setw(2)setfill('')i张,5元setw(2)setfill('')j张,1元setw(2)setfill('')k张。endl;return0;}12.用循环语句编程,分别打印下列两个矩阵形式,尽量使语句简洁。(1)101234562123456032345601434560125456012365601234(2)(1,1)(1,2)(1,3)(1,4)(1,5)(1,6)(1,7)(2,1)(2,2)(2,3)(2,4)(2,5)(2,6)(2,7)(3,1)(3,2)(3,3)(3,4)(3,5)(3,6)(3,7)(4,1)(4,2)(4,3)(4,4)(4,5)(4,6)(4,7)(5,1)(5,2)(5,3)(5,4)(5,5)(5,6)(5,7)(6,1)(6,2)(6,3)(6,4)(6,5)(6,6)(6,7)解答:(1)#includeiostreamusingnamespacestd;intmain(){for(inti=0;i6;i++){couti+1;for(intj=0;j=5;j++)cout(j+i)%7;cout(6+i)%7endl;}return0;}(2)#includeiostreamusingnamespacestd;intmain(){for(inti=1;i=6;i++){for(intj=1;j=7;j++)cout(i,j);cout(i,7)endl;}return0;}13.编程打印乘法九九表:(1)*123456789----------------------------------------------------11224336944812165510152025661218243036771421283542498816243240485664
本文标题:C++程序设计(第二版)钱能-第2章--基本编程语句
链接地址:https://www.777doc.com/doc-4381967 .html