您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序改错基本题
1北京石油化工学院12级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。1.求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;inta[5];for(j=1;j=5;j++)scanf(“%d”,a);max=a[0];for(j=1;j=5;j++)if(maxa[j]){max=a[j];m=j;}printf(“下标:%d\n最大值:%d”,j,max)}*3.求3+4inta=3,b=4;main(){inta,c;c=a+b;printf(“c=%d”);}4.用一个函数求两个数之和。2sum(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,%d\n,q1,q2);}前五题答案:1.sum应初始化即加入sum=1第四行改为:scanf(“%d”,&n);第六行改为:while(i=n)第十行改为:printf(sum=%ld,sum);2.第四行改为:for(j=0;j5;j++)第五行改为:scanf(“%d”,&a[j]);第七行改为:for(j=0;j5;j++)第八行改为:if(maxa[j])第十三行改为:printf(“下标:%d\n最大值:%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;3第9行:q1=&a,q2=&b;第10行:if(ab)swap(q1,q2);第11行:printf(\n%d,%d\n,*q1,*q2);6.程序读入20个整数,统计非负数个数,并计算非负数之和.#include“stdio.h”main(){inti,a[20],s,count;s=count=1;s=count=0;for(i=1;i20;i--)for(i=0;i20;i--)scanf(“%d”,a[i]);scanf(“%d”,&a[i]);for(i=0;i20;i++){if(a[i]0)break;continue;s+=a[i];count++;}printf(“s=%fcount=%f\n”,s,count);}printf(“s=%dcount=%d\n”,s,count);7.x,y两个数中,让x中存较大的数,y存较小的数#includestdio.hmain(){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=%d\n”,&x,&y);}printf(“x=%d,y=%d\n”,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()4{inti,sumi=1;While(i=100){sum=sum*i;i++;}printf(“%c”,sum)}10、求一个4×4矩阵的对角线元素之和main(){inta[4][4],sum=0;inti,j;printf(“Enterdata:\n”);for(i=0;i=4;I++)for(j=0,j=4;j++)scanf(“%d”,&a[i][j]);for(i=0;i4;I++)for(j=0;j4;j++)sum=sum+a[i][j];printf(“sum=%5d\n”,sum);}12.求1+2+3+4+……n的值。main(){longintsum;intn,i=1;scanf(d,&n);printf(“\n”);while(in){sum=sum*i;i++;}printf(sum=%d,sum);}*13.调用起泡法函数排序voidsort(inta[],n);{inti,j,temp,*p;for(i=0;in-1;i++)for(j=n-1;ji;j--)if(data[j]data[j-1]){temp=a[j];5a[j]=a[j-1];a[j-1]=temp;}main(){intdata[10];*p=data;printf(Pleaseinput10numbers:\n);for(i=0;iNUM;i++,p++)scanf(%d,&p);p=&data[0];sort(data[10],10);printf(\ntheresultofsort:\n);for(i=0;i10;i++)printf(%d,data[i]);}15.编程计算下面分段函数,输入x,输出y101131001201xxxxxxymain(){intx,y;printf(“\nInputx:\n”);scanf(“%d”,x);if(x0)y=x-1;elseif(x=0||x=10)y=2x-1;elsey=3x-1;printf(“y=%d”,&y);}16.求100~300间能被3整除的数的和。main(){intn;longsum;for(n=100;n=300;n++){6if(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=95*(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.编程计算12+32+52+…+92,要求输出中间计算结果。main(){inti,sum=0;7for(i=1;i=9;i+2)sum+=i;printf(sum=%d,sum);}21.求表达式abc的值#includestdio.h#includemath.hintfun(intx,inty);main(){inta,b;floatf;scanf(“%d,%d”,a,b);if(ab0){f=fun(a,b);printf(Theresultis:%d\n,&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)}824、一个小于1000的正整数每位上的数字是多少。#includestdio.hmain(){intn,i,j,k;printf(Inputanumbern(0n1000):\n);scanf(%d,n);if(n=0||n=1000){printf(error);exit(0);}k=n%10.0;j=(n%100)/10;i=n/100;printf(%s%s%s\n,i,j,k);}25、输入三角形的三边长,求三角形的面积。#includemath.hmain(){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.2f\n,&a,&b,&c,&s);printf(area=%7.2f\n,&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!=%d\n,s);}*27、下面程序实现的功能是求两整数的最小公倍数。#includestdio.hmain(){intm,n,result1;resultprint(“inputtwointegers:\n”);scaf(“%d%d”,m,n);&m,&n9result=mn?n:m;while((result%m!=0)||(result%n==0))!=result++;printf(“Theleastcommonmultipleofmandnis%d\n”,&result);result}28.下列程序实现按分数从高到低的顺序输出,划线处存在错误,请予以更正.#includestdio.h#defineARR_SIZE40voidSort(floatscore[],longnum[],intn)main(){floatscore[ARR_SIZE];intn,i;longnum[ARR_SIZE];printf(Pleaseentertotalnumber:);scanf(%d\n,n);printf(Pleaseenterthenumberandscore:\n);for(i=0;in;i++){scanf(%ld%f,&num[i],&score[i]);}Sort(score,num,n);printf(Sortedresults:\n);for(i=0;in;i++){printf(%ld\t%4.0f\n,num[i],score[i]);}}voidSort(score,num,n){inti,j;floattemp1;longtemp2;for(i=0;in-1;i++){for(j=i;j=n;j++){if(score[j]score[i]){temp1=score[j];score[j]=score[i];score[i]=temp1;temp2=num[j];num[j]=num[i];num[i]=temp2;}}}}29.把用户输入的数据累加,直到输入零为止,输出累加的结果。10#includestdio.hmain()
本文标题:C语言程序改错基本题
链接地址:https://www.777doc.com/doc-3234308 .html