C语言程序改错基本题库_第1页
C语言程序改错基本题库_第2页
C语言程序改错基本题库_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京石油化工学院12级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执 行结果。1 .求 1234nmai n() long int sum;int n,i=1;scan f(%d, n);printf( n ”while(in) sum=sum*i; i+;pri2. 求一个数组中最大值及其下标。mai n() int max,j,m;int a5;for(j=1;j=5;j+)sea nf( %d ”,a);max=a0;for(j=1;jaj) max=aj; m=j;pri*3.求 3+4int a=3,b=4;main () int a,c;

2、c=a+b;printf( C=%d ”4.用一个函数求两个数之和。sum(x,y) float z;z=x+y;return;main () float a,b;int c;sca nf(%f,%f,&a,&b);c=sum(a,b);prin tf(nSum is %f,sum);5 用指针作函数参数,对输入的两个整数按大小顺序输出。swap(i nt *p1,*p2) int *p;*p=*p1;*p1=*p2;*p2=*p;main () int a,b;int *q1,*q2;scan f(%d,%d,&a,&b);&q仁a, &q2=b;if(ab) swap(*q1,*q2);p

3、rin tf(n%d,%dn,q1,q2);前五题答案:1.sum应初始化第四行改为:第六行改为:第十行改为:即加入sum=1 scanf( “ %d,&n); while(i=n) prin tf(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. 第三行改为:int c;第五行改为:printf( c=%d ”,c);4. 第一行改为:float sum(float x, flo

4、at y );第四行改为:return(z);第八行:float c;第十仃:prin tf(nSum is %f,c);5. 第 2、3 行: int t;t=*p1;*p1=*p2;*p2=t;第 9 行:q仁&a,q2=&b;第 10 行:if(ab) swap(q1,q2);第 11 行:printf(n%d,%dn,*q1,*q2);6. 程序读入20个整数,统计非负数个数,并计算非负数之和#in elude“ stdio.h ”main ()int i, a20, s , count ;s=co un t=1;for( i=1; i20; j-)seanf( “ ai); for(

5、i=0;i20;i+)if(ai0)s=co un t=0;for(i=0;i20;i-)scanf( %d :&ai);break;con ti nue;s +=ai;coun t+;printf( “ s=%n” ,s, count);printf( s=%dcount=%dn ”,s,count);7. x , y两个数中,让x中存较大的数,y存较小的数 #in clude mai n()int x , 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,

6、y=%dn ”,x,y);8. 从键盘输入整数x的值,并输出y的值.main ()int x; float y;printf( y=%f ”,y); float x,y;正确的:scanf( %d:, &x);y=3.5+x;printf( y=%d ”);9. 从1加到100,并输出.Mai n ()int i , sumi=1;While ( i=100 ) sum=sum*i;i+ ;printf (“ C , sum )10、求一个4X4矩阵的对角线元素之和mai n()int a44, sum=0;int i,j;printf( Enter data:n”;for(i=0;i=4;l

7、+) for(i=0,i=4;i+) scanf( %d ”&aij);for(i=0;i4;l+) for(i=0:j n) sum=sum*i: i+;prin tf(sum=%d,sum);*13 .调用起泡法函数排序void sort(i nt a, n); int i,j,temp,*p;for(i=0; ii; j-) if(dataj dataj-1) temp=aj;aj= aj-1;aj-1=temp; main () int data10;*p=data;prin tf(Please in put 10 nu mbers:n);for(i=0; iNUM; i+,p+)se

8、a nf(,%d, &p);p=& data0;sort(data10,10);prin tf(nthe result of sort:n); for(i=0; i10; i+)prin tf(%d ,datai);15. 编程计算下面分段函数,输入x,输出ymain () int x,y;printf( “ n ”);scanf(“ d , x);if(x=0|x=10)y=2x-1:elsey=3x_1;printf(“ y=%&”;:16. 求100300间能被3整除的数的和。main () int n;long sum;for(n=100; *=300; n+)if(n%3=0)sum

9、=sum* n;printf( Id %”,sum);17. 用函数实现两个整数的交换。swap( int *p1, int *p2) int *p;p=p1;p仁 p2;p2=p;main () int a,b;printf( nl“put a,b:” );scanf( “ %d,%&a,&b);swap(&a , &b );printf( n%d,%d ,a,b);2位小数。18. 实现华氏温度转换为摄氏温度,公式为:c=*(f-32),要求输出结果取main () int c , f ;prin tf(Please enter f:);scanf(%f , &f);c=5/9*(f-32

10、);printf(f=%f,c=%f, c, f) ; 19. 下面程序的功能是计算n!。main () int i , n;int s ;prin tf(PIease en ter n:);seanf(%d , n);for(i=1 ; i=n ; i+);s=*i ;printf(%d! = %d, i , s) ; 20. 编程计算12+ 32 + 52+ 92,要求输出中间计算结果。mai n() int i , sum=0;for(i=1 : i=9 : i+2)sum+=i: printf(sum = %d, sum);21. 求表达式的值#in elude #in elude i

11、nt fun (i nt x, int y);main () int a,b; float f;scanf( “ d,%d ,a,b);if(ab0) f = fun( a,b); prin tf(The result is:%dn, &f)else printf(“error! ” );fun (x, y) float result;result = sqrt(a+b);return;22、通过函数调用,求两个数之差sub(x,y) float z;z=x-y;return;main () float a,b;int e;seanf( “f,%f”,&a,&b);e=sub(a,b);pri

12、ntf(“nSub is %f ”,sub);23、求1到100的累加和.mai n ()int i , sumi=1;while ( i=100 ) sum=sum*i :i+ :printf (“ C , sum )24、一个小于1000的正整数每位上的数字是多少。#i nclude stdio.hmain () int n,i,j,k;printf(Input a number n(0n1000):n);scan f(”d”, n);if(n=1000)pri ntf(error);exit(0);k=n %10.0;j=( n%100)/10;i=n/100;prin tf(%s %s

13、 %sn,i,i,k);25、输入三角形的三边长,求三角形的面积。#in clude mai n()float a,b,c,s,area;sea n(%d,%d,%d,a,b,c);s=1.0/2for(n=0:n” );scaf( “ WTm, n);&m,&nresult= mn ? n: m :while( (result % m !=0 ) | ( result % n = =0) )!=result+;printf( “ The least com mon multiple of m and n is %d &result); int i, j;float tempi;long te

14、mp2;for (i=0; in-1; i+) for (i=i; i=n; i+) if (sco tempi = scorej; scorej = scorei; scorei = tempi;temp2 = nu mj;nu mj = nu mi;nu mi = temp2;29.把用户输入的数据累加,直到输入零为止,输出累加的结果。#in cludemain () in tt sum=0,d;printf(Enter a serial of numbers ended by 0:n);(a+b+c);area=sqrt(s(s-a)(s-b)(s-c);prin tf(a=%7.2f,

15、b=%7.2f,c=%7.2f,s=%7.2fn,&a,&b,&c,& s);prin tf(area=%7.2fn,&area)26、求和 1! +2! +3! +4! +20!。mai n()float s=0,t=0;int n;result28 下列程序实现按分数从高到低的顺序输出,划线处存在错误,请予以更正#i nclude #define ARR_SIZE 40void Sort(float score, I ong nu m, int n)main () float scoreARR_SIZE;int n, i;lo ng nu mARR_SIZE;prin tf(Please

16、en ter total nu mber:);sea nf(%dn, n);prin tf(Please en ter the nu mber and score:n);for (i=0; in; i+) scan f(%ld%f,&n umi, &scorei); Sort(score, num, n);prin tf(Sorted results:n);for (i=0;i n;i+) pri ntf(%ldt%4.0fn, numi,scorei);void Sort(score, num, n)while(1) scan f(”d”,d);if(d=0) break;sum+=d;pr

17、in tf(sum=%fn,sum);正确:sea nf(%d, &d);正确: d=0正确:prin tf(sum=%dn,sum) ;30、求 1+2+3+4+n(n 100)#in cludefun(n);main () int p, n;scan f(%d,&n);p=int fun(n):prin tf(p=%d,p);int fun (i nt m) int total ;正确:正确:正确:int i=1;while(i=m) total=total+i;i+;正确:return:32.求一个3 X 3矩阵的主对角线元素之和mai n() int a33; int sum;int

18、i,j;printf( Enter data:n”;for(i=0;i3;i+)for(j=0,j3,j+)seanf( %f,&ailil);for(i=0;i3;i+)for(i=0,i=3;i+)if (i=i)sum +=aij;printf( Sum=%5dn ”,sum);33.摄氏温度C=(5/9)(F-32),求华氏温度F=100时对应的摄氏温度#in elude void ma in (void)int eelsius; fahr;fahr = 100;eelsius = 5 * (fahr - 32) / 9;prin tf(fahr = d, Celsius = %dn, fahr, Celsius);二、下列程序有逻辑错误,请改正,使之能完成要求的功能1.输入6个整数,按每行3个数输出这些整数,最后输出6个整数的平均值。#in elude void mai n() int i, a6, sum=0 ,n=0 ;int av ;for(i=0 ; in ; i+)scan f(%d,ai);for(i=0 ; in ; i+) prin tf(%d,ai);if(i%3=0)prin tf(n);for(i=0 ; i!=n ; i+) sum+=ai ;av=su m/n;prin tf(av=%fn,av);2. 输入一系列学生成绩,输入负数为止。统计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论