收藏 分销(赏)

C语言程序改错.doc

上传人:w****g 文档编号:7022104 上传时间:2024-12-25 格式:DOC 页数:44 大小:153.54KB
下载 相关 举报
C语言程序改错.doc_第1页
第1页 / 共44页
C语言程序改错.doc_第2页
第2页 / 共44页
点击查看更多>>
资源描述
(完整版)C语言程序改错 〖第1题〗『程序改错』(5分)(题号:422) /*-—--—-————---——————------———---—----——————-—-———-——--- 【程序改错】 —--————----—-----—-—-----———--————--———-——-————————--—-- 题目:给一个不多于5位的正整数,要求:一、求它是 几位数,二、逆序打印出各位数字。 ————-————-——--—-——-———--—--—---------——-—----—-—---—--—- 注意:不可以增加或删除程序行,也不可以更改程序 的结构。 -—-————--—--—-———--——-—-———--———-—---—-——--—-———————-—*/ #include"stdio。h” main( ) { /**********FOUND**********/ long a,b,c,d,e,x, scanf(”%ld",&x); a=x/10000; /**********FOUND**********/ b=x/10000/1000; c=x%1000/100; d=x%100/10; e=x%10; /**********FOUND**********/ if (a==0) printf(”there are 5, %ld %ld %ld %ld %ld\n”,e,d,c,b,a); else if (b!=0) printf(”there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(” there are 3,%ld %ld %ld\n”,e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(” there are 1,%ld\n",e); getch(); } 答案: 1)。 long a,b,c,d,e,x; 2). b=x%10000/1000; 或 b=x/1000%10; 3)。 if (a!=0) 或 if (!a) 〖第2题〗『程序改错』(5分)(题号:411) /*—-—————-—-——-—----—-—---—---———-—-——--—-————-—--——-—-— 【程序改错】 --———-—-———--—-——-———-———---—--—-—-———-—---—--—————————- 题目:某个公司采用公用电话传递数据,数据是四位的 整数,在传递过程中是加密的,加密规则如下: 每位数字都加上5,然后除以10的余数代替该位数 字。再将新生成数据的第一位和第四位交换,第 二位和第三位交换。 举例:输入一个四位整数1234,则结果为:9876。 —-—---——--——-————————————-—-————————-———--——---—-—--—-—— 注意:不可以增加或删除程序行,也不可以更改程序 的结构。 —--———-——--———--—--———----—---————---——--—-—————-—--——*/ #include "stdio。h" main() {int a,i,aa[4],t; printf("输入一个四位整数:"); /**********FOUND**********/ scanf("%d”,&a); aa[0]=a%10; /**********FOUND**********/ aa[1]=a%100%10; aa[2]=a%1000/100; aa[3]=a/1000; /**********FOUND**********/ for(i=0;i〈=3;i++) {aa[i]+=5; aa[i]%=10; } for(i=0;i〈=3/2;i++) {t=aa[i]; aa[i]=aa[3—i]; aa[3-i]=t; } for(i=3;i〉=0;i—-) printf("%d",aa[i]); getch(); } 〖第1题〗『程序改错』(5分)(题号:253) /*-——-——--—-—---————-—--——--——-————----—----————---——--— 【程序改错】 —--———————--—--———-——--———-----—-—-——-—--—-———-—-—-——--— 题目:输入10个数,要求输出这10个数的平均值 ----—-—-—---————-—-——-—------——-——---——-—-————-——--—--—- 注意:不可以增加或删除程序行,也不可以更改程序的结构. -——------———————-——-—-—-————-—-——----—-—----————-—--——*/ float average(float array[10]) { int i; float aver,sum=array[0]; /***********FOUND***********/ for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10。0; return(aver); } main( ) { /***********FOUND***********/ int score[10],aver ; int i; printf(”input 10 scores:\n”); for(i=0;i<10;i++) /***********FOUND***********/ scanf(”%f”, score); printf(”\n”); /***********FOUND***********/ aver=average(score[10]); printf(”average score is %5。2f",aver); } 答案: 1). for(i=1;i〈10;i++) 或 for(i=1;i<=9;i++) 2)。 float score[10],aver; 或 float aver,score[10]; 3)。 scanf("%f”, &score[i]); 或 scanf(”%f", score+i); 4). aver=average(score); 〖第2题〗『程序改错』(5分)(题号:414) /*—--—-----—---——-—--—--—-—-—-———-——————--——--——--—---—- 【程序改错】 —---—-—-—————-————---—--—--————--—-—----——--—-----—--—-— 题目:输入一行字符,分别统计出其中英文字母、空 格、数字和其它字符的个数。 --———-—---—--———--—-—--—--—--—-—-—----——-——-——---—————-- 注意:不可以增加或删除程序行,也不可以更改程序 的结构. ——————----———-—---——--——-—----—----——-—------—--——--——*/ #include "stdio。h” main() {char c; int letters=0,space=0,digit=0,others=0; printf(”please input some characters\n”); /**********FOUND**********/ while((c=getchar())==’\n’) { /**********FOUND**********/ if(c>='a’&&c〈='z’&&c>='A’&&c<=’Z’) letters++; /**********FOUND**********/ else if(c=!’ ’) space++; else if(c〉=’0’&&c<=’9') digit++; else others++; } printf("all in all:char=%d space=%d digit=%d others=%d\n",letters, space,digit,others); } 答案: 1). while((c=getchar())!=’\n’) 2). if( c〉='a’&&c<=’z' || c>=’A’&&c〈=’Z’ ) 或 if( c〈='z’&&c〉=’a' || c>='A’&&c〈=’Z’ ) 或 if( c<='z’&& c>='a’|| 3)。 else if(c==' ’) 〖第3题〗『程序改错』(5分)(题号:250) /*--—---—--——-—---—-—-—--—-——-————-—-—-—-—--——-———-—---- 【程序改错】 -----—-——------——-———————--—---—------------—-—————----- 题目:以下程序输出前六行杨辉三角形,即 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ………… ………… -—--—------—-—----——-—--------——--—-——-——--—-——-——--———- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 —---—-----—------------—-----—-—-——--——----———————----*/ main( ) { static int a[6][6]; int i,j,k; /***********FOUND***********/ for(i=1;i〈=6;i++) {for(k=0;k〈10-2*i;k++) printf(” "); for(j=0;j〈=i;j++) { /***********FOUND***********/ if(j==0&&j==i) a[i][j]=1; else /***********FOUND***********/ a[i][j]=a[i-1][j—1]+a[i][j—1]; printf(” ”); printf("%-3d”,a[i][j]); } /***********FOUND***********/ printf("\t"); } } 答案: 1)。 for(i=0;i<6;i++) 或 for(i=0;i<=5;i++) 2)。 if(j == 0 || j == i) 3). a[i][j]=a[i—1][j]+a[i-1][j—1]; 或 a[i][j]=a[i—1][j-1]+a[i-1][j]; 4). printf(”\n"); 答案: 1). scanf("%d",&a); 2)。 aa[1]=a%100/10; 或 aa[1]=a/10%10; 3)。 for(i=0;i<=3;i++) 或 for(i=0;i〈4;i++) 〖第1题〗『程序改错』(5分)(题号:3) /*-—--—--—--—-——---—---—-——--—---—-—-—-—--—---———————--- 【程序改错】 --——--——-——-——————————-——-—————-——-—------—-—--———---——- 题目:用起泡法对10个整数从小到大排序。 程序中共有4条错误语句,请改正错误。 -—-—--—---——-————-—-———--——-----—--—--——-—-——--—-——-——-- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 -——--—------—---——--—--—-———------————————-——-——————--*/ void sort(int x[],int n) { int i,j,k,t; for(i=0;i<n-1;i++) /**********FOUND**********/ for(j=0;j〈n-i;j++) /**********FOUND**********/ if(x[i]>x[i+1]) { t=x[j];x[j]=x[j+1];x[j+1]=t;} } main() { int i,n,a[100]; printf("please input the length of the array:\n"); scanf("%d”,&n); for(i=0;i〈n;i++) /**********FOUND**********/ scanf("%d",a[i]); /**********FOUND**********/ sort(n,a); printf("output the sorted array:\n”); for(i=0;i〈=n—1;i++) printf(”%5d",a[i]); printf(”\n"); } 答案: 1). for(j=0;j< n -1 -i ;j++) 或 for(j=0; n -1 -i >j;j++) 或 for(j=0;j<n—( 1 + i );j++) 或 for(j=0;n—( 1 + i )〉j;j++) 或 for(j=0;j<= n —2 —i ;j++) 2). if(x[j]>x[ j + 1 ]) 或 if(x[ j + 1] <x[j]) 3)。 scanf("%d”,&a[i]); 或 scanf("%d”,a+i); 4). sort(a,n); 或 sort(&a[0],n); 〖第2题〗『程序改错』(5分)(题号:431) /*---—————-—-—------—--—-—--———-----—-—-————--——-——---—- 【程序改错】 ——-———-—-—-——-———---—————----—-—--———-—-——-———-—----—-—— 题目:编写函数fun求1000以内所有8的倍数之和。 -—-—---————-—--—--—----——--—----——--——----—-—--—-—————-— 注意:不可以增加或删除程序行,也不可以更改程 序的结构。 ——-—-----————----——-——————-—--—————----————-—----—-———*/ #include”stdio。h" #define N 1000 main() {int sum; sum=fun(8); printf(”%d以内所有%d的倍数之和为:%d\n",N,8,sum); getch(); } int fun(int m) { /**********FOUND**********/ int s=0;i; /**********FOUND**********/ for(i=1;i〉N;i++) /**********FOUND**********/ if(i/m==0) s+=i; return s; } 答案: 1)。 int s=0 , i ; 2)。 for(i=1;i〈N;i++) 3). if(i%m==0) 〖第3题〗『程序改错』(5分)(题号:444) /*———-----———--—-—-—————--——————-—---—--—---——-—-—----—- 【程序改错】 -——----—-—---———--—-——--—-—-—-——-—---—----—--————--—-——- 题目:求100以内(包括100)的偶数之和。 ---———---—--—-——-------——————---——-——-——------—-—-—--——- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ———-—-——-—-—————----——--————-————--——-—-———-——-—-—-——-*/ #include "stdio.h” main() { /**********FOUND**********/ int i,sum=1; /**********FOUND**********/ for(i=2;i<=100;i+=1) sum+=i; /**********FOUND**********/ printf("Sum=%d \n";sum); getch(); } 答案: 1)。 int i,sum=0; 2). for(i=2;i<=100;i+=2) 3). printf(”Sum=%d \n",sum); 〖第1题〗『程序改错』(5分)(题号:14) /*-—————-———--——-—-—-------—--—-—-——-——-——--—-—————-—--- 【程序改错】 —---—--—--—--———-—--—---—-----———-——-——--————-—----—-—-— 题目:函数fun的功能是:求1到20的阶乘的和. 请改正程序中的错误,使它能得出正确的结果。 ———————————---——-——-—----—-——--—--—---—---—-—---—--————- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 -———————-———————-—----———-—-——-—-—-—-----—-—--———-—-——*/ fun() { int n,j; float s=0。0,t=1。0; for(n=1;n〈=20;n++) { /**********FOUND**********/ s=1; for(j=1;j〈=n;j++) /**********FOUND**********/ t=t*n; /**********FOUND**********/ s+t=s; } /**********FOUND**********/ printf(”jiecheng=%d\n",s); } main() { fun(); } 答案: 1). t=1; 或 t=1。0; 2). t= t * j ; 或 t*=j; 或 t=j*t; 3)。 s= s + t ; 或 s+=t; 或 s=t+s; 4). printf("jiecheng=%f\n",s); 〖第2题〗『程序改错』(5分)(题号:396) /*-—----——-———-——----—-——---———-—-——-——-——-——-——-————-—— 【程序改错】 —---—-—-—--—--——-——-—--—-----—---——-————---——-—-——--—--- 题目:请编写一个函数fun,函数的功能是:统计出若干 个学生的平均成绩,最低分以及得最低分的人数。 例如,输入10名学生的成绩分别为92,87,68,56, 92,84,67,75,92,66,则输出平均成绩为77。9, 最高分为56,得最高分的人数为1人。 -—--———-———-———--—-—————-—----————-————-—-------—-———-—- 注意:不可以增加或删除程序行,也不可以更改程序的结构. ——----—--—-——---—-—--—-—---—----——-—-----—-—--—--——---*/ #include ”stdio。h" float Min=0; int J=0; float fun(float array[],int n) { int i;float sum=0,ave; Min=array[0]; for(i=0;i<n;i++) { if(Min>array [i]) Min=array [i]; /**********FOUND**********/ sum=+array [i]; } /**********FOUND**********/ ave=sum\n; for(i=0;i<n;i++) /**********FOUND**********/ if(array [i]=Min) J++; return(ave); } main( ) { float a[10],ave; int i=0; for(i=0;i<10;i++) scanf(”%f”,&a[i]); ave=fun(a,10); printf("ave=%f\n",ave); printf(”min=%f\n",Min); printf(”Total:%d\n",J); getch(); } 答案: 1). sum+=array[i];} 或 sum=sum+array [i]; } 2). ave=sum/n; 3)。 if(array[i]==Min) J++; 或 if(Min==array[i]) J++; 〖第3题〗『程序改错』(5分)(题号:444) /*——-—-—————————-—-——-—--—————---——-—-—-—--——-————-—-——- 【程序改错】 —--——--—-—-———-——-————---—----—-——--—--—-——————————-—--— 题目:求100以内(包括100)的偶数之和。 —--—-——-—-——--—--—-——------———————-———-——---———---—--—-— 注意:不可以增加或删除程序行,也不可以更改程序的结构。 -——-—--—-—-———-——---——---——-——————-—-——--——-—---——---—*/ #include ”stdio。h" main() { /**********FOUND**********/ int i,sum=1; /**********FOUND**********/ for(i=2;i<=100;i+=1) sum+=i; /**********FOUND**********/ printf("Sum=%d \n”;sum); getch(); } 答案: 1)。 int i,sum=0; 2)。 for(i=2;i〈=100;i+=2) 3). printf(”Sum=%d \n”,sum); 〖第1题〗『程序改错』(5分)(题号:14) /*-----—--———-—---————---—--—-———--—-----——————-———-——-- 【程序改错】 ——-—-----—-——-—-—---—-————-——--——--——-—-—-—--—--——--—--- 题目:函数fun的功能是:求1到20的阶乘的和。 请改正程序中的错误,使它能得出正确的结果。 ----——--————-----—-—-————--———---——---——-——--—----——-——- 注意:不可以增加或删除程序行,也不可以更改程序的结构. —----—-————-——--—-—-—-———--—-——-———-—-—----——————--——-*/ fun() { int n,j; float s=0.0,t=1。0; for(n=1;n<=20;n++) { /**********FOUND**********/ s=1; for(j=1;j〈=n;j++) /**********FOUND**********/ t=t*n; /**********FOUND**********/ s+t=s; } /**********FOUND**********/ printf(”jiecheng=%d\n",s); } main() { fun(); } 答案: 1)。 t=1; 或 t=1.0; 2)。 t= t * j ; 或 t*=j; 或 t=j*t; 3). s= s + t ; 或 s+=t; 或 s=t+s; 4). printf(”jiecheng=%f\n",s); 〖第2题〗『程序改错』(5分)(题号:412) /*-—-——----——-—--———--—--—————-————-——---—-——————------- 【程序改错】 -——---————----—---——--—----——----————---—-——---—-———---- 题目:将一个正整数分解质因数。例如:输入90,打印出 90=2*3*3*5 —-—-—-——----———---——-———-—--—-————---——----—-—--—-—----- 注意:不可以增加或删除程序行,也不可以更改程序 的结构。 —--—----——--————--—————-—-------—————---—-—---————-———*/ #include "stdio.h" main() { int n,i; printf("\nplease input a number:\n”); scanf(”%d",&n); printf(”%d=”,n); for(i=2;i<=n;i++) { /**********FOUND**********/ while(n==i) { /**********FOUND**********/ if(n%i==1) { printf("%d*",i); /**********FOUND**********/ n=n%i; } else break; } } printf(”%d”,n); } 答案: 1). while(n!=i) 2). if(n%i==0) 或 if (!(n%i)) 3). n=n/i; 〖第3题〗『程序改错』(5分)(题号:449) /*—-----—--———----—-------——-———————-——--———-——--——-—-—— 【程序改错】 —-——————--—-————--—--—--——-———--————--——----—----————-—— 题目:编写函数fun计算下列分段函数的值: x*20 x〈0且x≠—3 f(x)= sin(x) 0≤x〈10且x≠2及x≠3 x*x+x—1 其它 ———-—--——-—-—--——--—-—--—-—--—---——-—---———-------——--—- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ———--——--———----—-—-————-—--————-———--——-————-—-----—-*/ #include"math。h” #include "stdio。h” float fun(float x) { /**********FOUND**********/ float y /**********FOUND**********/ if (x〈0 || x!=—3.0) y=x*20; else if(x>=0 && x〈10.0 && x!=2。0 && x!=3.0) y=sin(x); else y=x*x+x—1; /**********FOUND**********/ return x; } main() { float x,f; printf(”Input x=”); scanf("%f”,&x); f=fun(x); printf(”x=%f,f(x)=%f\n",x,f); getch(); } 答案: 1)。 float y; 2)。 if (x〈0 && x!=—3。0) 3)。 return y; 或 return (y); 〖第1题〗『程序改错』(5分)(题号:444) /*—----——---——-——--—---—-—------—-——---——-———————-———--— 【程序改错】 -—-—-------—-————-——---——-——--—--—--—--------—--——--——-- 题目:求100以内(包括100)的偶数之和。 —---——--—-——-——---———-—-——-----—-——-—--—-—-—-—----—-———— 注意:不可以增加或删除程序行,也不可以更改程序的结构。 —--—----—------—-—--—----—---—-——-————----————-----———*/ #include ”stdio.h” main() { /**********FOUND**********/ int i,sum=1; /**********FOUND**********/ for(i=2;i〈=100;i+=1) sum+=i; /**********FOUND**********/ printf("Sum=%d \n”;sum); getch(); } 答案: 1). int i,sum=0; 2)。 for(i=2;i<=100;i+=2) 3). printf("Sum=%d \n”,sum); 〖第2题〗『程序改错』(5分)(题号:435) /*—-—-—-——--—--————-—-—--—---—-—-——------—--—---—-—-———— 【程序改错】 -—-——--—--—----—-——--—-————--——-------——-—-——————-—---—- 题目:编写一个程序计算某年某月有几天 。(注意要区分闰年) -——---—————-———-—-—----—-———-—---—--—-——----———-——------ 注意:不可以增加或删除程序行,也不可 以更改程序的结构。 -—-——--——-————-----—--—---———-—--———---—--—————-———---*/ #include〈stdio.h> void main() { int yy,mm,len; printf("year,month=”); scanf("%d%d",&yy,&mm); /**********FOUND**********/ switch(yy) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: len=31; /**********FOUND**********/ break case 4: case 6: case 9: case 11: len=30; break; case 2: if (yy%4==0 && yy%100!=0 || yy%400==0) len=29; else len=28; break; /**********FOUND**********/ default printf(”input error!\n”); break; } printf("The length of %d %d id %d\n”,yy,mm,len); getch(); } 答案: 1). switch(mm) 2). break; 3)。 default : 〖第3题〗『程序改错』(5分)(题号:404) /*——-----————---—-—-—-———-—-——----—-------——-—---——--——- 【程序改错】 --—--——---—-—----—————--————----—-———-—-——-———-—------—- 题目:编写函数fun求20以内所有5的倍数之积。 --—-—-———-—--————--—-—-—
展开阅读全文

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


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服