C++实验教程实验25答案.docx
- 文档编号:28850142
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:31
- 大小:28.24KB
C++实验教程实验25答案.docx
《C++实验教程实验25答案.docx》由会员分享,可在线阅读,更多相关《C++实验教程实验25答案.docx(31页珍藏版)》请在冰豆网上搜索。
C++实验教程实验25答案
实验二、 选择结构
【上机内容】
1.修改下列程序,使之满足当x为10时输出“==”,否则输出“!
=”的条件。
#include"stdio.h"
main()
{intx;
scanf("%d",&x);
if(x==10)printf("==\n");
elseprintf("!
=\n");
}
2.修改下列程序,使之实现以下功能:
#include“stdio.h”
main()
{inta,b,c;
scanf(“%d%d%d”,&a,&b,&c);
if(a==b)
{if(b==c)
printf(“a==b==c”);
}
else
printf(“a!
=b”);
}
3.程序填空。
从键盘输入任意一个字母,将其按小写字母输出。
#include
main()
{charc;
scanf("%c",&c);
if(c>='A'&&c<='Z')
c=c+32;
printf("\n%c",c);
}
4.有以下程序,执行后输出结果为_______4__________
#include“stdio.h”
main()
{inta=1,b=2,c=3,d=4;
if(a
elseif((c-b)==a)printf(“%d\n”,2*d);
elseprintf(“%d\n”,4*d);
}
5.有以下程序,执行后输出结果为______970___________
#include"stdio.h"
main()
{inta=8,b=7,c=9,t=0;
if(a
if(a if(b printf("%5d%5d%5d\n",a,b,c); } 6.有以下程序,执行后输出结果为_____987____________ #include"stdio.h" main() {inta=8,b=7,c=9,t=0; if(a if(a if(b printf("%5d%5d%5d\n",a,b,c); } 7.有一函数 x(x<1) y=2x–1(1≤x<10) 3x–11(x≥10) 编写程序输入x,输出y值。 参考答案: #include"stdio.h" main() {intx,y; scanf("%d",&x); if(x<1) y=x; elseif(x<10) y=2*x-1; else y=3*x-11; printf("%d",y); } 8.输入一个百分制分数,要求输出对应的成绩等级: 90—100为‘A’,80—89为‘B’,70—79为‘C’,60—69为‘D’,不及格为‘E’。 参考答案: #include main( ) {floatscore; printf("inputsocre: "); scanf("%f",&score); if(score>=90) printf("A\n"); elseif(score>=80) printf("B\n"); elseif(score>=70) printf("C\n"); elseif(score>=60) printf("D\n"); else printf("E\n"); } 9.给一个不多于3位的正整数,要求: (1)求出它是几位数; (2)、分别打出每一位数字; (3)、按逆序打出各位数字,例如原数为321,应输出123。 参考答案: #include"stdio.h" voidmain() {inta,b,c,x,n; scanf("%d",&x); a=x/100; b=(x-a*100)/10; c=x%10; if(a! =0) printf("%d为3位数,原数为%d,逆序数为%d\n",x,x,c*100+b*10+a); elseif(b! =0) printf("%d为2位数,原数为%d,逆序数为%d\n",x,x,c*10+b); else printf("%d为1位数,原数为%d,逆序数为%d\n",x,x,c); } 任务2switch语句程序设计 【目的与要求】 1.熟练掌握switch语句; 2.掌握break语句在switch中的应用。 1.有如下程序,执行后输出结果为______14___________ #include“stdio.h” main() {inti=5; switch(i) {case4: i+=1; case5: i+=2; case6: i+=3; default: i+=4; } printf("%d\n",i); } 2.有如下程序段,若grade的值为'C',则输出结果是_____Medium! ____ Pass! ________ switch(grade) {case'A': printf("Excellent! \n"); case'B': printf("Fine! \n");break; case'C': printf("Medium! \n"); case'D': printf("Pass! \n");break; default: printf("Fail! \n"); } 3.有以下程序,执行后输出结果为_______a=3,b=5__________ #include“stdio.h” main() {intx=0,y=1,a=2,b=3; switch(x) {case0: switch(y) {case0: a++; case1: b++;break; } case1: a++;b++;break; case2: a++;b++; } printf(“\na=%d,b=%d”,a,b); } 4.将下列的程序段改用switch语句来实现,使它完成相同的功能。 if(x<0)y=0; elseif(x<10)y=x; elseif(x<20)y=x+3; elseif(x<40)y=-0.5*x+10; elsey=2*x-5; 参考答案: #include"stdio.h" main() {intx1,x2; floaty; scanf("%d",&x1); x2=x1; switch(x1>0) {case0: y=0;break; case1: switch(x2/10) {case0: y=x2;break; case1: y=x2+3;break; case2: case3: y=-0.5*x2+10;break; default: y=2*x2-5;break; } } printf("x=%d,y=%f",x1,y); } }5.假设奖金税率如下(ma代表奖金,tr代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款以及实得奖金数(扣除奖金税后), ma<1000tr=0% 1000≤ma<2000tr=5% 2000≤ma<4000tr=8% 4000≤matr=10% 参考答案: #include"stdio.h" main() {floatma,tr,ma_tr; scanf("%f",&ma); printf("奖金数为%8.2f",ma); switch(ma>=1000) {case0: tr=0;break; case1: switch((int)ma/1000) {case1: tr=0.05;break; case2: case3: tr=0.08;break; default: tr=0.1;break; } } printf("税率为=%.2f,应交税款为=%.2f,实得奖金数为=%.2f\n",tr,ma*tr,ma*(1-tr)); } 实验三、 循环结构实验 (1) 任务1while语句程序设计 【目的与要求】 1.熟练掌握while语句 2.能用while语句实现各种算法 1.分析并修改下面的程序,使该程序能正常结束运行。 #include main() {intx,y; x=2;y=0; while(! y--) printf(“%d,%d\n”,x,y); } 2.下列程序中,while循环的循环次数为___6_____ #include main() {inti=0; while(i<10) {if(i==5)break; i++; } printf(“%d\n”,i); } 3.下面是一个计算e的近似值(使误差小于给定的数值)的程序。 main() {doublee=1.0,x=1.0,y,detax; inti=1; printf(“pleaseinputenter: \n”); scanf(“%lf”,&detax); y=1/x; while(y>=detax) { x=x*i; y=1/x; e=e+y; ++i; } printf(“%12.10f”,e); } 参考答案: 实验要求: (1)阅读上面的程序,写出程序所依据的计算公式。 e=1+1/1! +1/2! +1/3! +....+1/n! (2)当输入的detax各是什么值时,能分别使程序按下面的要求运行: a.不进入循环;>=1 b.只循环一次;无此条件 c.只循环两次;==1 d.进入死循环(程序将永远循环下去)。 <=0 (3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y 4.编写程序。 对输入的任意的一个正整数按反序输出。 例如,输入147,输出741。 参考答案: #include"stdio.h" voidmain() { intx,i; scanf("%d",&x); while(x! =0) {i=x%10; x=x/10; printf("%d",i); } } 任务2do-while语句程序设计 【目的与要求】 1.熟练掌握do-while语句 2.能用do-while语句实现各种算法 2.掌握while语句和do-while语句的区别 1.分析并修改下面的程序,使该程序能正常结束运行。 #include main() {intx=0; do{ x++; }while(x==2); printf(“%d\n”,x); } 2.有以下两段程序,比较输出结果并分析原因: (一) main() {intx=0; while(x<0)x++; printf(“%d\n”,x); } 结果为: 0 (二) main() {intx=0; do{x++; }while(x<0); printf(“%d\n”,x); } 结果为: 1 3.下列程序中,do_while循环的循环次数为__无限次______ #include main() {inti=0; do{if(i==6)continue; i=i+2; }while(i<10); printf(“%d\n”,i); } 4.运行下列程序,输出结果为_______4000________ #include"stdio.h" #defineN100 main() {intx=0,sum=0; do{if(x==(x/5*5)) continue; sum=sum+x; }while(++x printf("sum=%d\n",sum); } 5.求1! +2! +3! +4! +5! +6! +7! +8! +9! +10! 请填空将下面的程序补充完整: 答案: 4037913 #include main() {intj,m,p,s; s=0; m=1; do {p=1; j=1; while(j<=m) {p*=j; j++; } s=s+p; m++; }while(m<=10); printf("s=%d\n",s); } 6.编写程序。 每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数总数达到不超过100的最大值,求每天平均花多少钱? 答案: 9.92 参考答案: #include"stdio.h" voidmain() { intx,sum,day; doubleave=0; x=2; day=1; sum=2; do {x=2*x; sum=sum+x; day++; }while(sum<=100); ave=(sum-x)*0.8/(day-1); printf("%lf",ave); } 实验四、 循环结构实验 (2) 任务1for语句程序设计 【目的与要求】 1.熟练掌握for语句 2.能用for语句实现各种算法 3.掌握for语句的嵌套使用 【上机内容】 1.分析并修改下面的程序,使该程序能正常结束运行。 #include main() {inti; for(i=1;i<10;i++) printf(“%d\n”,i); } 2.分析并修改下面的程序,使sum的值为1+2+……+10的和 #include main() {inti=1,sum=0; for(;i<=10;i++) sum=sum+i; printf("sum=%d\n",sum); } 3.运行下列程序,输出结果为_________15________ #include main() {inti,sum=0; for(i=0;i<=10;i++) {sum=sum+i; if(i==5)break; } printf(“sum=%d\n”,sum); } 4.运行下列程序,输出结果为_______4000__________ #include main() {inti,sum=0; for(i=0;i<=100;i++) {if((i%5)==0) continue; sum=sum+i; } printf("sum=%d\n",sum); } 5.运行下列程序,输出结果为________6_________ #include main() {inti,j,sum=0; for(i=0;i<=3;i++) for(j=0;j<=5;j++); sum=sum+j; printf("sum=%d\n",sum); } 6.程序填空。 求出1000以内能被13整除的最大数。 #include"stdio.h" voidmain() {inti; for(i=1000;i>0;i--) if(i%13==0) break; printf("\n%d",i); } 7、程序填空。 求Fibonacci数列: 1,1,2,3,5,8,···的前40个数,即: F1=1(n=1) F2=1(n=2) Fn=Fn-1+Fn-2(n>=3) 要求每一行输出8个数。 参考答案: #include main() {longf1,f2; inti; f1=1;f2=1; for(i=1;i<=20;i++) {printf("%10ld%10ld",f1,f2); if(i%4==0)printf("\n"); f1=f1+f2; f2=f2+f1; } } 8.程序填空。 从键盘输入10个不为0的整型数,统计其中负数的个数, 并求出所有正数的平均值。 参考答案: #include main() {inti,x,count=0; floatave=0; for(i=0;i<10;i++) {scanf("%d",&x); if(x>0) ave+=x; else count++; } if(count! =10) ave/=10-count; printf("count: %d,Average: %f\n",count,ave); } 9.帕多瓦数列: 1,1,1,2,2,3,4,5,7,9,12,16,21,…求出这个数列的前20项之和。 参考答案: 方法1《一次一项》 #include"stdio.h" voidmain() {intf1=1,f2=1,f3=1,f,sum=3,i; printf("%d%d%d",f1,f2,f3); for(i=4;i<=20;i++) {f=f1+f2; printf("%d",f); sum=sum+f; f1=f2; f2=f3; f3=f; } printf("\nsum=%d",sum); } 方法2《一次3项》 #include"stdio.h" voidmain() {intf1=1,f2=1,f3=1,sum=0,i; for(i=1;i<=7;i++) {printf("%d%d%d",f1,f2,f3); sum=sum+f1+f2+f3; f1=f1+f2; f2=f2+f3; f3=f3+f1; } printf("\nsum=%d",sum-f3+f1); } 例: 有一数列: 2/1,3/2,5/3,8/5,…求出这个数列的前20项之和。 #include main() {inti=1,n=20; floatt,m,x=1,y=2,sum=0; while(i<=n) {m=y/x; sum=sum+m; t=y; y=y+x; x=t; i++; } printf("Theresultis: %10.4f\n",sum); } 10.统计能被4整除而且个位数为6的4位数的个数及和。 参考答案: #include"stdio.h" main() {inti,sum=0,count=0; for(i=1000;i<=9999;i++) if(i%10==6&&i%4==0) {count++; sum=sum+i; } printf("个数为: %8d,总和为: %8d\n",count,sum); } 11.求1~100之间所有素数的个数及和。 参考答案: #include #include main() {intm,n,i,j,k,sum=0; n=0; for(m=2;m<=100;m++) {k=(int)sqrt(m); i=2; while(m%i! =0&&i<=k) i++; if(i==k+1) {n++;sum=sum+m;} } printf("共有%8d个素数,总和为%8d\n",n,sum); } 12.编写程序输出下面的数字金字塔。 1 121 12321 1234321 123454321 参考答案: #include main() { intn=5,i,j; for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++) printf(""); for(j=1;j<=i;j++) printf("%d",j); for(j=i-1;j>=1;j--) printf("%d",j); printf("\n"); } } 实验5函数定义、声明与调用 任务1函数的定义和声明 【目的与要求】 (1)掌握C语言函数定义与调用的规则; (2)熟悉C语言函数声明的形式与位置; (3)掌握C语言函数定义、声明与调用之间的关系。 【上机内容】 1.预测下面程序的输出,并上机运行验证结果。 (结果: 21) #include func(inta,intb) { intc; c=a+b; returnc; } main( ) { intx=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf("%d\n",r); } 2.分析推测下面程序的输出,并上机运行验证结果。 (结果: 12) #include unsignedfun26(unsignednum) { unsignedk=1; do {k*=num%10;num/=10;} while(num); returnk; } main( ) { unsignedn=26; printf("%d\n",fun26(n)); } 3.求出以下程序的运行结果,并描述程序所完成的功能。 (求x的n次幂即2的4次幂。 结果: 16) #include main( ) { intpower(intx,intn); intx=2,n=4; printf("\ns=%d",power(x,n)); } intpower(intx,intn) { inti,p=1; for(i=1;i<=n;i++) p=p*x; return(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 教程 25 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)