1、大学C语言程序设计实验教程实验答案版实验1 基本程序示例任务1 熟悉C语言程序的编辑、编译、连接和运行过程【上机内容】1输入并运行下面程序,写出运行结果。#include stdio.hmain() char c1,c2; c1=97;c2=98; printf(%c,%c, c1, c2);在此基础上,完成以下3项任务:(1)在c1=97;c2=98;语句后加入如下语句,并运行。printf(%d, %d, c1, c2 );运行结果:a,b97,98(2)将char c1,c2;改为如下语句,再运行。int c1, c2;运行结果:a,b(3)将c1=97;c2=98;改为如下语句,再运行
2、,并分析其运行结果。c1=300; c2=400;运行结果:,怭(或,?)2分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。#include stdio.hmain() char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%c b%ctabc%c n,c1,c2,c3);printf(tb%c %c,c4,c5);运行结果:aa bb abccA N3分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。#include stdio.hmain() int i , j , m , n ; i=
3、8; j=10; m=+i; n=j+; printf(%d,%d,%d,%d,i,j,m,n);运行结果:9,11,9,10分别进行以下改动后,先分析结果,再运行对照。(1)将m=+i; n=j+;改为如下:m=i+; n= + j;运行结果:9,11,8,11(2)程序改为如下:#include stdio.hmain() int i , j ;i=8; j=10;printf(%d,%d, i+, j+);运行结果:8,10(3)程序改为如下:#include stdio.hmain() int i , j ;i=8; j=10;printf(%d,%d, + i, + j);运行结果:
4、9,11(4)程序改为如下:#include stdio.hmain() int i , j ;i=8; j=10;printf(%d,%d,%d,%d,i,j,i+,j+);运行结果:8,10,8,10(5)程序改为如下:#include stdio.hmain()int i , j , m=0 , n=0 ;i=8; j=10;m+= i +; n-= -j;printf(i=%d,j=%d,m=%d,n=%d,i,j,m,n);运行结果:i=9,j=9,m=8,n=-9任务2 简单的C语言程序设计1按格式要求输入、输出数据。程序请单如下:#include stdio.hmain() in
5、t a,b; flost x,y; char c1,c2; scanf(a=%d,b=%d,&a,&b); scanf(%f, %e,&x,&y); scanf(%c %c,&c1,&c2); /*录入时%c与%c之间有个空格*/ printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2);运行该程序,必须按如下方式在键盘上输入数据: a=3,b=7 8.5,71.82a A (注解:a与A之间输入一个空格,且a紧跟71.82后写,不要空格)请写出输出结果。运行结果:a=7,b=3,x=8.500000,y=71.820000,c1=a,c2=
6、A2输入三角形的三条边长,求三角形面积。程序清单如下:#include stdio.h#include math.hmain()float a,b,c,s,area;scanf(%f ,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%f,area);运行结果:(具体情况根据自己输入的数据而定)如在键盘上输入:3,4,5则运行结果为:area=6.0000003已知圆半径、圆柱高、求圆周长、圆柱体积。程序清单如下:#include stdio.hmain()float r,h,l,v,pi;pi
7、=3.1415926;scanf(%f,%f,&r,&h);l=2*pi*r;v=pi*r*r*h;printf(圆周长为:%6.2fn,l);printf(%圆柱体积为:6.2f,v);运行结果:(具体情况根据自己输入的数据而定)如在键盘上输入:5,6则运行结果为:圆周长为:31.42圆柱体积为:471.244输入一个摄氏温度,要求输出华氏温度,公式为f = 5/9c+32。程序清单如下:#include stdio.hmain()float c,f;scanf(%f,&c);f=5.0/9*c+32;printf(%5.2fn,c);运行结果:(具体情况根据自己输入的数据而定)如在键盘上输
8、入:37则运行结果为:52.56实验2选择结构任务1 if语句程序设计1修改下列程序,使之满足输入10时输出“= =”,否则输出“!=”的条件。#includestdio.hmain()int x;scanf(%d,&x);if(x=10)printf(=n);else printf(!=n);2修改下列程序,使之实现以下功能: 当a= =b并且b=c时,输出“a=b=c”; 当a!=b时,输出“a!=b”。#include “stdio.h” main( ) int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if (a=b) if(b=c) printf(“a=b=c”)
9、; else printf(“a!=b”);3程序填空。从键盘输入任意一个大写字母,将其转换成相应小写字母输出。 #include main() char c; scanf(%c,&c); if (c=A&c=65&c=90) c=c+32; printf(n%c,c); 4有以下程序,执行后输出结果为_4_。#include “stdio.h”main( ) int a=1,b=2,c=3,d=4; if(abc) printf(“%dn”,d); else if(c-b)=a) printf(“%dn”,2*d); else printf(“%dn”,4*d);5有以下程序,执行后输出结果
10、为_9 7 0_。#include stdio.h main( ) int a=8,b=7,c=9,t=0; if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%5d%5d%5dn,a,b,c); 6有以下程序,执行后输出结果为_9 8 7_。#include stdio.h main( ) int a=8,b=7,c=9,t=0; if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%5d%5d%5dn,a,b,c); 7. x
11、、y有如下函数关系,编写程序输入x,输出y值。 x (x1) y = 2x1 (1x10) 3x11 (x10) 参考答案:#include stdio.hmain() double x,y; scanf (%lf,&x); if (x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; printf (y=%lf,y);8 输入一个百分制分数,要求输出对应的成绩等级:90100为A,8089为B,7079为C,6069为D,不及格为E。参考答案:#includemain() float score; printf(input socre:); scanf(
12、%f, &score); if(score=90) printf(An); else if(score=80) printf(Bn); else if(score=70) printf(Cn); else if(score=60) printf(Dn); else printf(En);9给一个不多于3位的正整数,编写程序完成以下要求:(1)求出它是几位数;(2)分别输出每一位数字;(3)按逆序输出各位数字,例如,原数为321,应输出123。参考答案:#include stdio.hvoid main()int a,b,c,x,n;scanf(%d,&x);a=x/100;b=(x-a*100
13、)/10;c=x%10;if(a!=0) printf(%d为3位数,原数为%d,逆序数为%dn,x,x,c*100+b*10+a);else if(b!=0) printf(%d为2位数,原数为%d,逆序数为%dn,x,x,c*10+b); else printf(%d为1位数,原数为%d,逆序数为%dn,x,x,c);任务2 switch语句程序设计1有如下程序,执行后输出结果为_14_。#include “stdio.h” main ( ) int i=5; switch(i) case 4:i+=1; case 5:i+=2; case 6:i+=3; default:i+=4; pr
14、intf(%dn,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.hmain( ) int x=0,y=1,a=2,b=3; switch(x) case 0: switch(y) ca
15、se 0: a+; case 1: b+; break; case 1: a+;b+; break; case 2: a+;b+; printf(na=%d,b=%d,a,b);4.将下列的程序段改用switch语句来实现,使它完成相同的功能。if(x=0&x10) y=x;else if(x20) y=x+3;else if(x0) case 0 :y=0; break; case 1 : switch(int)x2/10) case 0: y=x2; break; case 1: y=x2+3;break; case 2: case 3: y=-0.5*x2+10;break; defau
16、lt: y=2*x2-5;break; printf(x=%f,y=%f,x1,y);5以下程序计算某年某月有几天,闰年与平年的二月份天数不同。判别闰年的条件是:能被4整除但不能被100整除的年是闰年,或者能被400整除的年也是闰年。请分析程序填空。#include stdio.h#include stdio.hmain() int yy,mm,days; printf(input year and month:); scanf(%d %d,&yy,&mm); switch(mm) case 1: case 3: case 5: case 7:case 8: case 10:case 12:
17、days=31 ;break; case 4: case 6: case 9: case 11:days=30;break; case 2:if(yy%4=0&yy%100!=0|yy%400=0) days=29 ; else days=28; break; default:printf(input error);break; printf(the days of %d %d is %dn,yy,mm,days);6.假设奖金税率如下(ma代表奖金,tr代表税率), 利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款以及实得奖金数(扣除奖金税后), ma1000时, tr=0
18、%; 1000 ma2000时, tr=5%; 2000 ma=1000) case 0 :tr=0; break; case 1 : switch(int)ma/1000) case 1: tr=0.05;break; case 2: case 3: tr=0.08;break; default: tr=0.1;break; printf(税率为=%.2f,应交税款为=%.2f,实得奖金数为=%.2fn,tr,ma*tr,ma*(1-tr);实验3循环结构实验(1)任务1 while语句程序设计1分析并修改下面的程序,使该程序能正常结束运行。 #include main() int x,y;
19、 x=2; y=0; while (!y-) printf (“%d,%dn”,x, y);2下列程序中,while循环的循环次数为_6次_。 #include main() int i=0; while(i10) if(i=5) break;i+; printf (“%dn”,i);3下面是一个计算e的近似值(使误差小于给定的数值)的程序。#includemain() double e=1.0,x=1.0,y,detax; int i=1; printf(please input enter :n); scanf(%lf,&detax); y=1/x; while(y=detax) x=x*
20、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.不进入循环;detax1.0b.只循环两次;detax0.5&detax=1.0c.进入死循环(程序将永远循环下去)。 =detax,分别换成ydetax,y=detax,ydetax,y=detax,观察程序运行将会有什么变化。4编写程序。对输入的任意的一个正整数按反序输出。例如,输入147,输出741。参考答案:#includ
21、e stdio.hvoid main() int x,i; scanf(%d,&x); while(x!=0) i=x%10; x=x/10; printf(%d,i); 任务2 do-while语句程序设计1分析并修改下面的程序,使该程序能正常结束运行。 #include main() int x=0; dox+;while(x=2); printf (“%dn”,x);2.有以下两段程序,比较输出结果并分析原因。(一)main() int x=0;while(x0) x+; printf (“%dn”,x); 结果为:0(二)main() int x=0; do x+;while(x0);
22、 printf (“%dn”,x); 结果为:1两段程序结果不同,是因为x的初始值为0,从而使循环条件不成立。当循环条件不成立一次都不成立时,dowhile循环会比while循环多执行一次循环体。3下列程序中,do_while循环的循环次数为_ 无限次_。#include main() int i=0; do if(i=6) continue; i=i+2; while(i10); printf (%dn,i);4.运行下列程序,输出结果为_sum=4000_。#include stdio.h#define N 100main( ) int x=0,sum=0; do if(x=(x/5*5)
23、 continue; sum=sum+x; while(+xN); printf(sum=%dn,sum);5.求 1!+2!+3!+4!+5!+6!+7!+8!+9!+10! 请填空将下面的程序补充完整: 答案:4037913#include main( ) int j,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=%dn,s);6. 编写程序。每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果总个数到不超过100的最大值,求每天平均花
24、多少钱? 答案:9.92参考答案:#include stdio.hvoid main() int x,sum,day; double ave=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);实验4循环结构实验(2)任务1 for语句程序设计1分析并修改下面的程序,使该程序能正常结束运行。#include main() int i; for(i=1;i10;i+) printf (%dn,i);2分析并修改下面的程序,使sum的值为1
25、+2+10的和。#include main( ) int i=1,sum=0; for(;i=10;i+) sum=sum+i; printf (sum=%dn,sum);3.运行下列程序,输出结果为_sum=15_。#include main() int i,sum=0; for(i=0;i=10;i+) sum=sum+i; if(i=5) break; printf (sum=%dn,sum);4.运行下列程序,输出结果为_sum=4000_。#include main() int i,sum=0; for(i=0;i=100;i+) if(i%5)=0) continue; sum=sum+i; printf (sum=%dn,sum);5.运行下列程序,输出结果为_ sum=60_。#include main() int i,j,sum=0; for(i=0;i=3;i+) for(j=0;j=5;j+) sum=sum+j; printf (sum=%dn,sum);6.程序填空。求出1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1