C语言程序改错基本题库完整.docx
- 文档编号:7115956
- 上传时间:2023-01-19
- 格式:DOCX
- 页数:16
- 大小:30.78KB
C语言程序改错基本题库完整.docx
《C语言程序改错基本题库完整.docx》由会员分享,可在线阅读,更多相关《C语言程序改错基本题库完整.docx(16页珍藏版)》请在冰豆网上搜索。
C语言程序改错基本题库完整语言程序改错基本题库完整石油化工学院石油化工学院12级复习题级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。
求1234nmain()longintsum;intn,i=1;scanf(%d,n);printf(“n”);while(in)sum=sum*i;i+;printf(sum=%d,sum);2求一个数组中最大值及其下标。
main()intmax,j,m;inta5;for(j=1;j=5;j+)scanf(“%d”,a);max=a0;for(j=1;jaj)max=aj;m=j;printf(“下标:
%dn最大值:
%d”,j,max)*3.求3+4inta=3,b=4;main()inta,c;c=a+b;printf(“c=%d”);4用一个函数求两个数之和。
sum(x,y)floatz;z=x+y;return;main()floata,b;intc;scanf(%f,%f,&a,&b);c=sum(a,b);printf(nSumis%f,sum);5用指针作函数参数,对输入的两个整数按大小顺序输出。
swap(int*p1,*p2)int*p;*p=*p1;*p1=*p2;*p2=*p;main()inta,b;int*q1,*q2;scanf(%d,%d,&a,&b);&q1=a,&q2=b;if(ab)swap(*q1,*q2);printf(n%d,%dn,q1,q2);前五题答案:
1.sum应初始化即加入sum=1第四行改为:
scanf(“%d”,&n);第六行改为:
while(i=n)第十行改为:
printf(sum=%ld,sum);2.第四行改为:
for(j=0;j5;j+)第五行改为:
scanf(“%d”,&aj);第七行改为:
for(j=0;j5;j+)第八行改为:
if(maxaj)第十三行改为:
printf(“下标:
%dn最大值:
%d”,m,max)3.第三行改为:
intc;第五行改为:
printf(“c=%d”,c);4.第一行改为:
floatsum(floatx,floaty);第四行改为:
return(z);第八行:
floatc;第十一行:
printf(nSumis%f,c);5.第2、3行:
intt;t=*p1;*p1=*p2;*p2=t;第9行:
q1=&a,q2=&b;第10行:
if(ab)swap(q1,q2);第11行:
printf(n%d,%dn,*q1,*q2);6程序读入20个整数,统计非负数个数,并计算非负数之和.#include“stdio.h”main()inti,a20,s,count;s=count=1;s=count=0;for(i=1;i20;i-)for(i=0;i20;i-)scanf(“%d”,ai);scanf(“%d”,&ai);for(i=0;i20;i+)if(ai0)break;continue;s+=ai;count+;printf(“s=%fcount=%fn”,s,count);printf(“s=%dcount=%dn”,s,count);7.x,y两个数中,让x中存较大的数,y存较小的数#includemain()intx,y=200,z=0;x=180;if(xy)z=x;x=y;y=z;z=x;x=y;y=z;printf(“x=%d,y=%dn”,&x,&y);printf(“x=%d,y=%dn”,x,y);8.从键盘输入整数x的值,并输出y的值.main()floatx,y;正确的:
intx;floaty;scanf(“%d”,&x);y=3.5+x;printf(“y=%d”);printf(“y=%f”,y);9.从1加到100,并输出.Main()inti,sumi=1;While(i=100)sum=sum*i;i+;printf(“%c”,sum)10、求一个44矩阵的对角线元素之和main()inta44,sum=0;inti,j;printf(“Enterdata:
n”);for(i=0;i=4;I+)for(j=0,j=4;j+)scanf(“%d”,&aij);for(i=0;i4;I+)for(j=0;jn)sum=sum*i;i+;printf(sum=%d,sum);*13调用起泡法函数排序voidsort(inta,n);inti,j,temp,*p;for(i=0;ii;j-)if(datajdataj-1)temp=aj;aj=aj-1;aj-1=temp;main()intdata10;*p=data;printf(Pleaseinput10numbers:
n);for(i=0;iNUM;i+,p+)scanf(%d,&p);p=&data0;sort(data10,10);printf(ntheresultofsort:
n);for(i=0;i10;i+)printf(%d,datai);15.编程计算下面分段函数,输入x,输出ymain()intx,y;printf(“nInputx:
n”);scanf(“%d”,x);if(x=0|x=10)y=2x-1;elsey=3x-1;printf(“y=%d”,&y);16.求100300间能被3整除的数的和。
main()intn;longsum;for(n=100;n=300;n+)if(n%3=0)sum=sum*n;printf(“%ld”,sum);17.用函数实现两个整数的交换。
swap(int*p1,int*p2)int*p;p=p1;p1=p2;p2=p;main()inta,b;printf(“nInputa,b:
”);scanf(“%d,%d”,&a,&b);swap(&a,&b);printf(“n%d,%d”,a,b);18.实现华氏温度转换为摄氏温度,公式为:
c=*(f-32),要求输出结果取2位小数。
main()intc,f;printf(Pleaseenterf:
);scanf(%f,&f);c=5/9*(f-32);printf(f=%f,c=%f,c,f);19下面程序的功能是计算n!
。
main()inti,n;ints;printf(Pleaseentern:
);scanf(%d,n);for(i=1;i=n;i+);s=*i;printf(%d!
=%d,i,s);20编程计算12325292,要求输出中间计算结果。
main()inti,sum=0;for(i=1;i=9;i+2)sum+=i;printf(sum=%d,sum);21.求表达式的值#include#includeintfun(intx,inty);main()inta,b;floatf;scanf(“%d,%d”,a,b);if(ab0)f=fun(a,b);printf(Theresultis:
%dn,&f)elseprintf(“error!
”);fun(x,y)floatresult;result=sqrt(a+b);return;22、通过函数调用,求两个数之差sub(x,y)floatz;z=x-y;return;main()floata,b;intc;scanf(“%f,%f”,&a,&b);c=sub(a,b);printf(“nSubis%f”,sub);23、求1到100的累加和.main()inti,sumi=1;while(i=100)sum=sum*i;i+;printf(“%c”,sum)24、一个小于1000的正整数每位上的数字是多少。
#includestdio.hmain()intn,i,j,k;printf(Inputanumbern(0n1000):
n);scanf(%d,n);if(n=1000)printf(error);exit(0);k=n%10.0;j=(n%100)/10;i=n/100;printf(%s%s%sn,i,j,k);25、输入三角形的三边长,求三角形的面积。
#includemain()floata,b,c,s,area;scan(%d,%d,%d,a,b,c);s=1.0/2*(a+b+c);area=sqrt(s(s-a)(s-b)(s-c);printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,&a,&b,&c,&s);printf(area=%7.2fn,&area)26、求和1!
+2!
+3!
+4!
+20!
。
main()floats=0,t=0;intn;for(n=0;n20;n+)t=t+n;s=s*t;printf(1!
+2!
+3!
+4!
+20!
=%dn,s);*27、下面程序实现的功能是求两整数的最小公倍数。
#includestdio.hmain()intm,n,result1;resultprint(“inputtwointegers:
n”);scaf(“%d%d”,m,n);&m,&nresult=mn?
n:
m;while(result%m!
=0)|(result%n=0)!
=result+;printf(“Theleastcommonmultipleofmandnis%dn”,&result);result28下列程序实现按分数从高到低的顺序输出,划线处存在错误,请予以更正.#include#defineARR_SIZE40voidSort(floatscore,longnum,intn)main()floatscoreARR_SIZE;intn,i;longnumARR_SIZE;printf(Pleaseentertotalnumber:
);scanf(%dn,n);printf(Pleaseenterthenumberandscore:
n);for(i=0;in;i+)scanf(%ld%f,&numi,&scorei);Sort(score,num,n);printf(Sortedresults:
n);for(i=0;in;i+)printf(%ldt%4.0fn,numi,scorei);voidSort(score,num,n)inti,j;floattemp1;longtemp2;for(i=0;in-1;i+)for(j=i;j=n;j+)if(scorejscorei)temp1=scorej;scorej=scorei;scorei=temp1;temp2=numj;numj=numi;numi=temp2;29.把用户输入的数据累加,直到输入零为止,输出累加的结果。
#includemain()inttsum=0,d;printf(Enteraserialofnumbersendedby0:
n);while
(1)scanf(%d,d);正确:
scanf(%d,&d);if(d=0)break;正确:
d=0sum+=d;printf(sum=%fn,sum);正确:
printf(sum=%dn,sum);30、求1+2+3+4+n(n100)#includefun(n);正确:
main()intp,n;scanf(%d,&n);p=intfun(n);正确:
printf(p=%d,p);intfun(intm)inttotal;正确:
inti=1;while(i=m)total=total+i;i+;return;正确:
32.求一个33矩阵的主对角线元素之和main()inta33;intsum;inti,j;printf(“Enterdata:
n”);for(i=0;i3;i+)for(j=0,j3,j+)scanf(“%f”,&aij);for(i=0;i3;i+)for(j=0,j=3;j+)if(i=j)sum+=aij;printf(“sum=%5dn”,sum);33.摄氏温度C=(5/9)(F-32),求华氏温度F=100时对应的摄氏温度。
#includevoidmain(void)intcelsius;fahr;fahr=100;celsius=5*(fahr-32)/9;printf(fahr=d,celsius=%dn,fahr,celsius);二、下列程序有逻辑错误,请改正,使之能完成要求的功能1输入6个整数,按每行3个数输出这些整数,最后输出6个整数的平均值。
#includevoidmain()inti,a6,sum=0,n=0;intav;for(i=0;in;i+)scanf(%d,ai);for(i=0;in;i+)printf(%d,ai);if(i%3=0)printf(n);for(i=0;i!
=n;i+)sum+=ai;av=sum/n;printf(av=%fn,av);2.输入一系列学生成绩,输入负数为止。
统计不及格的人数,计算平均分。
#include#defineARR_SIZE80voidmain()intscoreARR_SIZE;inti;intno_pass=0;floatave;printf(Pleaseinputthescore:
);scanf(“%d”,&scorei);while(scorei=0)if(scorei60)no_pass+;ave=ave+scorei;ave=ave/n;printf(notpassnum:
%dn,no_pass);printf(theaveis:
%fn,ave);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 改错 基本 题库 完整