大学C语言程序设计实验教程实验答案版.docx
- 文档编号:4167365
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:61
- 大小:41.85KB
大学C语言程序设计实验教程实验答案版.docx
《大学C语言程序设计实验教程实验答案版.docx》由会员分享,可在线阅读,更多相关《大学C语言程序设计实验教程实验答案版.docx(61页珍藏版)》请在冰豆网上搜索。
大学C语言程序设计实验教程实验答案版
实验1基本程序示例
任务1熟悉C语言程序的编辑、编译、连接和运行过程
【上机内容】
1.输入并运行下面程序,写出运行结果。
#include"stdio.h"
main( )
{
charc1,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)将charc1,c2;改为如下语句,再运行。
intc1,c2;
运行结果:
a,b
(3)将c1=97;c2=98;改为如下语句,再运行,并分析其运行结果。
c1=300;c2=400;
运行结果:
,,怭(或,,?
)
2.分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。
#include"stdio.h"
main( )
{
charc1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%cb%c\tabc%c\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
运行结果:
aabbabcc
AN
3.分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。
#include"stdio.h"
main( )
{
inti,j,m,n;
i=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.h"
main( )
{
inti,j;
i=8;j=10;
printf("%d,%d",i++,j++);
}
运行结果:
8,10
(3)程序改为如下:
#include"stdio.h"
main( )
{
inti,j;
i=8;j=10;
printf("%d,%d",++i,++j);
}
运行结果:
9,11
(4)程序改为如下:
#include"stdio.h"
main( )
{
inti,j;
i=8;j=10;
printf("%d,%d,%d,%d",i,j,i++,j++);
}
运行结果:
8,10,8,10
(5)程序改为如下:
#include"stdio.h"
main( )
{
inti,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.h"
main( )
{
inta,b;
flostx,y;
charc1,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=%c\n",a,b,x,y,c1,c2);
}
运行该程序,必须按如下方式在键盘上输入数据:
a=3,b=7↙
8.5,71.82aA↙(注解:
a与A之间输入一个空格,且a紧跟71.82后写,不要空格)
请写出输出结果。
运行结果:
a=7,b=3,x=8.500000,y=71.820000,c1=a,c2=A
2.输入三角形的三条边长,求三角形面积。
程序清单如下:
#include"stdio.h"
#include"math.h"
main( )
{
floata,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.000000
3.已知圆半径、圆柱高、求圆周长、圆柱体积。
程序清单如下:
#include"stdio.h"
main( )
{
floatr,h,l,v,pi;
pi=3.1415926;
scanf("%f,%f",&r,&h);
l=2*pi*r;
v=pi*r*r*h;
printf("圆周长为:
%6.2f\n",l);
printf("%圆柱体积为:
6.2f",v);
}
运行结果:
(具体情况根据自己输入的数据而定)
如在键盘上输入:
5,6↙
则运行结果为:
圆周长为:
31.42
圆柱体积为:
471.24
4.输入一个摄氏温度,要求输出华氏温度,公式为f=5/9·c+32。
程序清单如下:
#include"stdio.h"
main( )
{
floatc,f;
scanf("%f",&c);
f=5.0/9*c+32;
printf("%5.2f\n",c);
}
运行结果:
(具体情况根据自己输入的数据而定)
如在键盘上输入:
37↙
则运行结果为:
52.56
实验2 选择结构
任务1if语句程序设计
1.修改下列程序,使之满足输入10时输出“==”,否则输出“!
=”的条件。
#include"stdio.h"
main()
{intx;
scanf("%d",&x);
if(x==10)printf("==\n");
elseprintf("!
=\n");
}
2.修改下列程序,使之实现以下功能:
①当a==b并且b==c时,输出“a==b==c”;②当a!
=b时,输出“a!
=b”。
#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>=65&&c<=90)
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、y有如下函数关系,编写程序输入x,输出y值。 x(x<1) y=2x–1(1≤x<10) 3x–11(x≥10) 参考答案: #include"stdio.h" main() {doublex,y; scanf("%lf",&x); if(x<1) y=x; elseif(x<10) y=2*x-1; else y=3*x-11; printf("y=%lf",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.有如下程序,执行后输出结果为______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&&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() {floatx1,x2; floaty; scanf("%f",&x1); x2=x1; switch(x1>0) {case0: y=0;break; case1: switch((int)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=%f,y=%f",x1,y); } 5.以下程序计算某年某月有几天,闰年与平年的二月份天数不同。 判别闰年的条件是: 能被4整除但不能被100整除的年是闰年,或者能被400整除的年也是闰年。 请分析程序填空。 #include"stdio.h" #include"stdio.h" main() {intyy,mm,days; printf("inputyearandmonth: "); scanf("%d%d",&yy,&mm); switch(mm) {case1: case3: case5: case7: case8: case10: case12: days=31;break; case4: case6: case9: case11: days=30;break; case2: if(yy%4==0&&yy%100! =0||yy%400==0)days=29; elsedays=28; break; default: printf("inputerror");break; } printf("thedaysof%d%dis%d\n",yy,mm,days); } 6.假设奖金税率如下(ma代表奖金,tr代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款以及实得奖金数(扣除奖金税后), ①ma<1000时,tr=0%; ②1000≤ma<2000时,tr=5%; ③2000≤ma<4000时,tr=8%; ④4000≤ma时,tr=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)); } 实验3 循环结构实验 (1) 任务1while语句程序设计 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的近似值(使误差小于给定的数值)的程序。 #include 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.不进入循环;detax>1.0 b.只循环两次;detax>0.5&&detax<=1.0 c.进入死循环(程序将永远循环下去)。 <=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.分析并修改下面的程序,使该程序能正常结束运行。 #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 两段程序结果不同,是因为x的初始值为0,从而使循环条件不成立。 当循环条件不成立一次都不成立时,do……while循环会比while循环多执行一次循环体。 3.下列程序中,do_while循环的循环次数为__无限次____。 #include main() {inti=0; do{if(i==6)continue; i=i+2; }while(i<10); printf("%d\n",i); } 4.运行下列程序,输出结果为_______sum=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); } 实验4 循环结构实验 (2) 任务1for语句程序设计 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.运行下列程序,输出结果为_________sum=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.运行下列程序,输出结果为_______sum=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.运行下列程序,输出结果为_______sum=60________。 #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.程序填空。 求出1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 语言程序设计 实验 教程 答案