收藏 分销(赏)

C语言程序改错基本题库.doc

上传人:人****来 文档编号:9803964 上传时间:2025-04-08 格式:DOC 页数:17 大小:57.54KB 下载积分:8 金币
下载 相关 举报
C语言程序改错基本题库.doc_第1页
第1页 / 共17页
C语言程序改错基本题库.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
北京石油化工学院 12级复习题 程序改错 一、 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1234n   main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n〞); while(i<n) { sum=sum*i; i++; printf("sum=%d",sum); 2.求一个数组中最大值及其下标。 main( ) { int max,j,m; int a[5]; for(j=1;j<=5;j++) scanf(“%d〞,a); max=a[0]; for(j=1;j<=5;j++) if(max>a[j]) { max=a[j]; m=j; printf(“下标:%d\n最大值:%d〞, j, max) *3. 求 3+4 int a=3,b=4; main() { int a,c; c=a+b; printf(“c=%d〞); 4.用一个函数求两个数之与。 sum(x,y) { float z; z=x+y; return; main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 s *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a<b) swap(*q1,*q2); printf("\n%d,%d\n",q1,q2); 前五题答案: 应初始化 即参加sum=1 第四行改为:scanf(“%d〞,&n); 第六行改为:while(i<=n) 第十行改为:printf("sum=%ld",sum); 2. 第四行改为:for(j=0;j<5;j++) 第五行改为:scanf(“%d〞,&a[j]); 第七行改为:for(j=0;j<5;j++) 第八行改为:if(max<a[j]) 第十三行改为:printf(“下标:%d\n最大值:%d〞, m,max) 3. 第三行改为:int c; 第五行改为:printf(“c=%d〞,c); 4. 第一行改为:float sum(float x, float y ); 第四行改为:return(z); 第八行:float c; 第十一行:printf("\nSum is %f",c); 5. 第2、3行:{ int t; t=*p1;*p1=*p2;*p2=t; 第9行:q1=&a,q2=&b; 第10行:if(a<b) s); 第11行:printf("\n%d,%d\n",*q1,*q2); 6. 程序读入20个整数,统计非负数个数,并计算非负数之与. #include “stdio.h〞 main() int i, a[20], s , count ; s=count=1; s=count=0; for( i=1; i<20; i- -) for(i=0;i<20;i--) scanf(“%d〞, a[i] ); scanf(“%d〞,&a[i]); for(i=0;i<20;i++) if(a[i]<0) break; continue; s +=a[i]; count++; printf(“s=%f count=%f\n〞, s, count); printf(“s=%d count=%d\n〞,s,count); 7. x , y两个数中,让x中存较大的数,y存较小的数 #include<stdio.h> main( ) int x , y=200 , z=0; x=180; if ( x<y) 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() { float x,y; 正确的: int x; float y; scanf(“%d〞,&x); y=3.5+x; printf(“y=%d〞); printf(“y=%f〞,y); 9. 从1加到100,并输出. Main ( ) {int i , sum i=1; While ( i<=100 ) { sum=sum*i; i++ ; printf ( “%c〞, sum ) 10、求一个4×4矩阵的对角线元素之与 main( ) {int a[4][4], sum=0; int i,j; printf(“Enter data:\n〞); for(i=0;i<=4;I++) for(j=0,j<=4;j++) scanf(“%d〞,&a[i][j]); for(i=0;i<4;I++) for(j=0;j<4;j++) sum=sum+a[i][j]; printf(“sum=%5d\n〞,sum); 12.求1+2+3+4+……n的值。   main() { long int sum; int n,i=1; scanf("d",&n); printf(“\n〞); while(i>n) { sum=sum*i; i++; printf("sum=%d",sum); *13.调用起泡法函数排序 void sort(int a[], n); { int i,j,temp,*p; for(i=0; i<n-1; i++) for(j=n-1; j>i; j--) if(data[j]< data[j-1]) {temp=a[j]; a[j]= a[j-1]; a[j-1]=temp; } main() { int data[10]; *p=data; printf("Please input 10 numbers:\n"); for(i=0; i<NUM; i++,p++) scanf("%d", &p); p=&data[0]; sort(data[10],10); printf("\nthe result of sort:\n"); for(i=0; i<10; i++) printf("%d ",data[i]); 15. 编程计算下面分段函数, 输入x, 输出y main() { int x,y; printf(“\n Input x:\n〞); scanf(“%d〞, x); if(x<0) y=x-1; else if(x>=0||x<=10) y=2x-1; else y=3x-1; printf(“y=%d〞,&y); 16. 求100~300间能被3整除的数的与。 main() { int n; long sum; for(n=100;n<=300;n++) if(n%3=0) sum=sum*n; printf(“%ld 〞,sum); 17. 用函数实现两个整数的交换。 s *p1,int *p2) { int *p; p=p1; p1=p2; p2=p; main() { int a,b; printf(“\nInput a,b: 〞); scanf(“%d,%d〞,&a,&b); s , &b ); printf(“\n%d,%d〞,a,b); 18. 实现华氏温度转换为摄氏温度,公式为:c=*(f-32),要求输出结果取2位小数。 main() { int c,f; printf("Please enter f:"); scanf("%f", &f); c=5/9*(f-32); printf("f=%f,c=%f",c,f);} 19.下面程序的功能是计算n!。 main() { int i,n; int s; printf("Please enter n:"); scanf("%d", n); for(i=1;i<=n;i++) ; s=*i; printf("%d! = %d",i,s);} 20.编程计算12+32+52+…+92,要求输出中间计算结果。 main() { int i, sum=0; for(i=1;i<=9;i+2) sum+=i;printf("sum = %d",sum); 21. 求表达式的值 #include <stdio.h> #include <math.h> int fun(int x, int y); main() { int a,b; float f; scanf(“%d,%d〞,a,b); if(ab>0) { f = fun(a,b); printf("The result is:%d\n", &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 c; scanf(“%f,%f〞,&a,&b); c=sub(a,b); printf(“\nSub is %f〞,sub); 23、求1到100的累加与. main ( ) {int i , sum i=1; while ( i<=100 ) { sum=sum*i ; i++ ; printf ( “%c〞, sum ) 24、 一个小于1000的正整数每位上的数字是多少。 #include "stdio.h" main() { int n,i,j,k; printf("Input a number n(0<n<1000):\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、输入三角形的三边长,求三角形的面积。 #include <math.h> main( ) {float a,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( ) float s=0,t=0; int n; for(n=0;n<20;n++) t=t+n; s=s*t; printf("1!+2!+3!+4!+……+20!=%d\n",s); *27、下面程序实现的功能是求两整数的最小公倍数。 #include "stdio.h" main( ) { int m ,n , result1; result print(“input two integers: \n〞); scaf(“%d %d〞, m, n); &m,&n result=m<n n: m ; while( (result % m !=0 ) || ( result % n = =0) ) != result++; printf(“The least common multiple of m and n is %d\n〞, &result); result 28.以下程序实现按分数从高到低的顺序输出,划线处存在错误,请予以更正. #include <stdio.h> #define ARR_SIZE 40 void Sort(float score[], long num[], int n) main() { float score[ARR_SIZE]; int n, i; long num[ARR_SIZE]; printf("Please enter total number:"); scanf("%d\n", n); printf("Please enter the number and score:\n"); for (i=0; i<n; i++) { scanf("%ld%f",&num[i],&score[i]); } Sort(score, num, n); printf("Sorted results:\n"); for (i=0;i<n;i++) { printf("%ld\t%4.0f\n",num[i],score[i]);} void Sort(score, num, n) { int i, j; float temp1; long temp2; for (i=0; i<n-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. 把用户输入的数据累加,直到输入零为止,输出累加的结果。 #include<stdio.h> main() { intt sum=0,d; printf("Enter a serial of numbers ended by 0:\n"); while(1) { scanf("%d",d); 正确: scanf("%d",&d); if(d=0) break; 正确: d==0 sum+=d; printf("sum=%f\n",sum); 正确: printf("sum=%d\n",sum) ; 30、求1+2+3+4++n(n<100) #include<stdio.h> fun(n); 正确: main() { int p, n; scanf("%d",&n); p=int fun(n); 正确: printf("p=%d",p); int fun(int m) { int total; 正确: int i=1; while(i<=m) { total=total+i; i++; return; 正确: 32. 求一个3×3矩阵的主对角线元素之与 main( ) { int a[3][3]; int sum; int i,j; printf(“Enter data:\n〞); for(i=0;i<3;i++) for(j=0,j<3,j++) scanf(“%f〞,&a[i][j]); for(i=0;i<3;i++) for(j=0,j<=3;j++) if (i=j) sum +=a[i][j]; printf(“sum=%5d\n〞,sum); 33. 摄氏温度 C=(5/9)(F-32),求华氏温度F=100时对应的摄氏温度。 #include <stdoi.h> void main(void) int celsius; fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf("fahr = d, celsius = %d\n", fahr, celsius); 二、 以下程序有逻辑错误,请改正,使之能完成要求的功能 1.输入6个整数,按每行3个数输出这些整数,最后输出6个整数的平均值。 #include <stdio.h> void main( ) { int i, a[6],sum=0 ,n=0; int av; for(i=0;i<n;i++) scanf("%d",a[i]); for(i=0;i<n;i++) { printf("%d",a[i]); if(i%3==0) printf("\n"); for(i=0;i!=n;i++) { sum+=a[i]; av=sum/n;} printf("av=%f\n",av); 2. 输入一系列学生成绩,输入负数为止。统计不及格的人数,计算平均分。 #include <stdio.h> #define ARR_SIZE 80 void main() { int score[ARR_SIZE]; int i ; int no_pass = 0; float ave; printf("Please input the score:"); scanf(“%d〞,& score [i]); while(score [i]>=0) { if (score [i]<60) no_pass ++; ave=ave+ score [i] ; ave=ave/n; } printf("not pass num: %d\n", no_pass); printf("the ave is: %f\n", ave); 第 17 页
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服