C++程序设计第二版钱能第2章基本编程语句.docx
- 文档编号:23811149
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:19
- 大小:24.03KB
C++程序设计第二版钱能第2章基本编程语句.docx
《C++程序设计第二版钱能第2章基本编程语句.docx》由会员分享,可在线阅读,更多相关《C++程序设计第二版钱能第2章基本编程语句.docx(19页珍藏版)》请在冰豆网上搜索。
C++程序设计第二版钱能第2章基本编程语句
第2章基本编程语句
2.9练习2(Exercises2)
1.对运行中输入的x,计算级数:
将所有绝对值不小于10-8的数都计入在内,要求输入精度为10-8。
分别用for和while语句各编写一个程序。
解答:
/*for语句*/
#include
#include
usingnamespacestd;
intmain()
{
intx,flag;
intdenominator,numerator;
doubleitem=1.0,sum=0;
cin>>x;
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;
}
cout< return0; } /*while语句*/ #include #include usingnamespacestd; intmain() { intx,flag; intdenominator,numerator,i=0; doubleitem=1.0,sum=0; cin>>x; 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++; } cout< return0; } 2.编程求1! +2! +3! +4! +…+12! ,并试着简化程序。 解答: #include intmain() { longlongsum=0,item=1; for(inti=1;i<=12;i++) { item*=i; sum+=item; } std: : cout< return0; } 3.编程求所有的“水仙花数(narcissusnumber)”。 所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如,153是水仙花数,因为 解答: #include #include usingnamespacestd; boolSX(intbegin) { inttemp=begin,s=0,n=1; while(temp=temp/10) n++; if(n<3||n>3) returnfalse; for(temp=begin;temp;temp=temp/10) s+=pow(temp%10,n); return(s==begin); } intmain() { intbegin,end; cout<<"请输入起点: "; cin>>begin; cout<<"请输入终点: "; cin>>end; cout< "< for(inti=begin;i<=end;i++) if(SX(i)) cout< system("pause"); return0; } 4.编程求1000之内的所有“完数”。 所谓“完数”是指一个数恰好等于它的包括1在内的所有不同因子之和。 例如,6是完数,因为6=1+2+3. 解答: #include #include usingnamespacestd; 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) cout< } return0; } 5.编程求所有的3位素数,且该数是对称的。 所谓“对称”是指一个数,倒过来还是该数。 例如,375不是对称数,因为倒过来变成了573。 解答: #include #include usingnamespacestd; boolSX(intbegin) { inttemp=begin,s=0,n=1; while(temp=temp/10) n++; if(n<3||n>3) returnfalse; if(begin%10==begin/10/10) { for(inti=2;i<=sqrt(begin);i++) if(begin%i==0) returnfalse; if(begin! =1) returntrue; } else returnfalse; } intmain() { intbegin,end; cout<<"请输入起点: "; cin>>begin; cout<<"请输入终点: "; cin>>end; cout< "< for(inti=begin;i<=end;i++) if(SX(i)) cout< system("pause"); return0; } 6.猴子吃桃问题。 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半加一个。 到第10天早上想再吃时,见只剩下一个桃子了。 试编程求第一天共摘下多少桃子。 解答: #include usingnamespacestd; intmain() { intpeach=1; for(inti=1;i<10;i++) peach=2*peach+1; cout< return0; } 7.用循环语句编程打印如下图案: % %%% %%%%% %%%%%%% %%%%%%%%% %%%%%%%%%%% %%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%%%% %%%%%%%%%%% %%%%%%%%% %%%%%%% %%%%% %%% % 解答: #include #include usingnamespacestd; intmain() { for(inti=0;i<19;i++) { for(intk=0;k<=abs(9-i);k++) cout<<""; for(intj=0;j<19-2*abs(9-i);j++) cout<<"%"; cout< : endl; } return0; } 8.用循环语句编程打印如下图案: (1)#$ (2)STSTSTSTSTSTSTSTSTS ##$$STSTSTSTSTSTSTSTS ###$$$STSTSTSTSTSTSTS ####$$$$STSTSTSTSTSTS #####$$$$$STSTSTSTSTS ######$$$$$$STSTSTSTS #######$$$$$$$STSTSTS ########$$$$$$$$STSTS #########$$$$$$$$$STS ##########$$$$$$$$$$S 解答: (1) #include usingnamespacestd; intmain() { for(inti=0;i<10;i++) { for(intk=0;k<9-i;k++) cout<<""; for(intj=0;j<=i;j++) cout<<"#"; cout<<""; for(intm=0;m<=i;m++) cout<<"$"; cout< } return0; } (2) #include usingnamespacestd; intmain() { for(inti=0;i<19;i++) { for(intj=0;j cout<<""; for(intk=0;k<19-2*i;k++) if(k%2==0) cout<<"S"; else cout<<"T"; cout< } return0; } 9.编程求解母牛问题。 若一头母牛,从出生起第四个年头开始每年生一头母牛,此规律,第n年时有多少头母牛? 解答: #include usingnamespacestd; intcow(intn) { if(n<4) return1; else returncow(n-1)+cow(n-3); } intmain() { intyear; cout<<"请输入第几年: "; cin>>year; cout<<"第"< "< return0; } 10.一球从100米高度落下,每次落地后跳回原高度的一半,再落下。 编程求它在第10次落地时,共经过距离为多少米? 第10次落地后的反弹有多高? 解答: #include usingnamespacestd; intmain(void) { doubledistance=0,height=100; for(inti=1;i<=10;i++){ height=height/2; distance+=3*height; } cout<<"第10次落地时,共经过距离为"< cout<<"第10次落地后的反弹高度为"< return0; } 11.将100元钱兑换成10元、5元、1元,编程求不同的兑换法。 要求每种兑法中都要有10元、5元和1元。 解答: #include #include usingnamespacestd; 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<<"第"< (2)< <<"10元"< (2)< <<"5元"< (2)< <<"1元"< (2)< "< return0; } 12.用循环语句编程,分别打印下列两个矩阵形式,尽量使语句简洁。 (1)10123456 21234560 32345601 43456012 54560123 65601234 (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) #include usingnamespacestd; intmain() { for(inti=0;i<6;i++) { cout< for(intj=0;j<=5;j++) cout<<(j+i)%7<<""; cout<<(6+i)%7< } return0; } (2) #include usingnamespacestd; intmain() { for(inti=1;i<=6;i++) { for(intj=1;j<=7;j++) cout<<"("< cout<<"("< } return0; } 13.编程打印乘法九九表: (1) *123456789 ---------------------------------------------------- 11 224 3369 4481216 5510152025 661218243036 77142128354249 8816243240485664 991827364554637281 (2) *123456789 ---------------------------------------------------- 1123456789 24681012141618 39121518212427 4162024283236 52530354045 636424854 7495663 86472 981 解答: (1) #include #include usingnamespacestd; intmain() { cout<<"*"; for(inti=1;i<=8;i++) cout< cout<<"9"< cout<<"-------"; for(inti=1;i<=8;i++) cout<<"-----"; cout<<"---"< for(inti=1;i<=9;i++) { for(intj=1;j<=i;j++) if(j==1) cout< else cout< cout< } return0; } (2) #include #include usingnamespacestd; intmain() { cout<<"*"; for(inti=1;i<=8;i++) cout< cout<<"9"< cout<<"-------"; for(inti=1;i<=8;i++) cout<<"-----"; cout<<"---"< for(inti=1;i<=9;i++) { for(intj=i;j<=9;j++) if(j==i) cout< else cout< cout< } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 第二 版钱能第 基本 编程 语句