1、完整版)C语言程序改错 〖第1题〗『程序改错』(5分)(题号:422) /*-—--—-————---——————------———---—----——————-—-———-——--- 【程序改错】 —--————----—-----—-—-----———--————--———-——-————————--—-- 题目:给一个不多于5位的正整数,要求:一、求它是 几位数,二、逆序打印出各位数字。 ————-————-——--—-——-———--—--—---------——-—----—-—---—--—- 注意:不可以增加或删除程序行,也不可以更改
2、程序 的结构。 -—-————--—--—-———--——-—-———--———-—---—-——--—-———————-—*/ #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
3、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();
4、 } 答案: 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、数据是四位的 整数,在传递过程中是加密的,加密规则如下: 每位数字都加上5,然后除以10的余数代替该位数 字。再将新生成数据的第一位和第四位交换,第 二位和第三位交换。 举例:输入一个四位整数1234,则结果为:9876。 —-—---——--——-————————————-—-————————-———--——---—-—--—-—— 注意:不可以增加或删除程序行,也不可以更改程序 的结构。 —--———-——--———--—--———----—---————---——--—-—————-—--——*/ #incl
6、ude "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++) {
7、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个数的平均值 ----—-—-—-
8、————-—-——-—------——-——---——-—-————-——--—--—- 注意:不可以增加或删除程序行,也不可以更改程序的结构. -——------———————-——-—-—-————-—-——----—-—----————-—--——*/ float average(float array[10]) { int i; float aver,sum=array[0]; /***********FOUND***********/ for(i=0;i<10;i++) sum=sum+array[i]; a
9、ver=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、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) /*—--—-----—-
11、——-—--—--—-—-—-———-——————--——--——--—---—- 【程序改错】 —---—-—-—————-————---—--—--————--—-—----——--—-----—--—-— 题目:输入一行字符,分别统计出其中英文字母、空 格、数字和其它字符的个数。 --———-—---—--———--—-—--—--—--—-—-—----——-——-——---—————-- 注意:不可以增加或删除程序行,也不可以更改程序 的结构. ——————----———-—---——--——-—----—----——-—---
12、—--——--——*/ #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*******
13、***/ 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' ||
14、 c>='A’&&c〈=’Z’ ) 或 if( c<='z’&& c>='a’|| 3)。 else if(c==' ’) 〖第3题〗『程序改错』(5分)(题号:250) /*--—---—--——-—---—-—-—--—-——-————-—-—-—-—--——-———-—---- 【程序改错】 -----—-——------——-———————--—---—------------—-—————----- 题目:以下程序输出前六行杨辉三角形,即 1 1 1
15、 1 2 1 1 3 3 1 1 4 6 4 1 ………… ………… -—--—------—-—----——-—--------——--—-——-——--—-——-——--———- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 —---—-----—------------—-----—-—-——--——----———————----*/ main( ) { static int a[6][6]; int i,j,k;
16、 /***********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 /**********
17、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
18、 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) /*-—--—--—--—-
19、——---—---—-——--—---—-—-—-—--—---———————--- 【程序改错】 --——--——-——-——————————-——-—————-——-—------—-—--———---——- 题目:用起泡法对10个整数从小到大排序。 程序中共有4条错误语句,请改正错误。 -—-—--—---——-————-—-———--——-----—--—--——-—-——--—-——-——-- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 -——--—------—---——--—--—-———------————————-
20、——-——————--*/
void sort(int x[],int n)
{
int i,j,k,t;
for(i=0;i
21、ay:\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;
22、 n -1 -i >j;j++) 或 for(j=0;j 23、—-—--———-----—-—-————--——-——---—-
【程序改错】
——-———-—-—-——-———---—————----—-—--———-—-——-———-—----—-——
题目:编写函数fun求1000以内所有8的倍数之和。
-—-—---————-—--—--—----——--—----——--——----—-—--—-—————-—
注意:不可以增加或删除程序行,也不可以更改程
序的结构。
——-—-----————----——-——————-—--—————----————-—----—-———*/
#include”st 24、dio。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; }
25、
答案:
1)。 int s=0 , i ;
2)。 for(i=1;i〈N;i++)
3). if(i%m==0)
〖第3题〗『程序改错』(5分)(题号:444)
/*———-----———--—-—-—————--——————-—---—--—---——-—-—----—-
【程序改错】
-——----—-—---———--—-——--—-—-—-——-—---—----—--————--—-——-
题目:求100以内(包括100)的偶数之和。
---———--- 26、—--—-——-------——————---——-——-——------—-—-—--——-
注意:不可以增加或删除程序行,也不可以更改程序的结构。
———-—-——-—-—————----——--————-————--——-—-———-——-—-—-——-*/
#include "stdio.h”
main()
{
/**********FOUND**********/
int i,sum=1;
/**********FOUND**********/
for(i=2;i<=100;i+=1)
sum+=i;
/**********FOUND**********/
27、
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)
/*-—————-———--——-—-—-------—--—-—-——-——-——--—-—————-—---
【程序改错】
—---—--—--—--———-—--—---—-----———-——-——--————-—----—- 28、—-—
题目:函数fun的功能是:求1到20的阶乘的和.
请改正程序中的错误,使它能得出正确的结果。
———————————---——-——-—----—-——--—--—---—---—-—---—--————-
注意:不可以增加或删除程序行,也不可以更改程序的结构。
-———————-———————-—----———-—-——-—-—-—-----—-—--———-—-——*/
fun()
{
int n,j;
float s=0。0,t=1。0;
for(n=1;n〈=20;n++)
{
/***** 29、****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 30、*t;
3)。 s= s + t ; 或 s+=t; 或 s=t+s;
4). printf("jiecheng=%f\n",s);
〖第2题〗『程序改错』(5分)(题号:396)
/*-—----——-———-——----—-——---———-—-——-——-——-——-——-————-——
【程序改错】
—---—-—-—--—--——-——-—--—-----—---——-————---——-—-——--—---
题目:请编写一个函数fun,函数的功能是:统计出若干
个学生的平均成绩,最低分以及得最低分的人数 31、
例如,输入10名学生的成绩分别为92,87,68,56,
92,84,67,75,92,66,则输出平均成绩为77。9,
最高分为56,得最高分的人数为1人。
-—--———-———-———--—-—————-—----————-————-—-------—-———-—-
注意:不可以增加或删除程序行,也不可以更改程序的结构.
——----—--—-——---—-—--—-—---—----——-—-----—-—--—--——---*/
#include ”stdio。h"
float Min=0;
int J=0;
flo 32、at fun(float array[],int n)
{
int i;float sum=0,ave;
Min=array[0];
for(i=0;i 33、eturn(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=su 34、m+array [i]; }
2). ave=sum/n;
3)。 if(array[i]==Min) J++; 或 if(Min==array[i]) J++;
〖第3题〗『程序改错』(5分)(题号:444)
/*——-—-—————————-—-——-—--—————---——-—-—-—--——-————-—-——-
【程序改错】
—--——--—-—-———-——-————---—----—-——--—--—-——————————-—--—
题目:求100以内(包括100)的偶数之和。
—--—-——-—-——- 35、—--—-——------———————-———-——---———---—--—-—
注意:不可以增加或删除程序行,也不可以更改程序的结构。
-——-—--—-—-———-——---——---——-——————-—-——--——-—---——---—*/
#include ”stdio。h"
main()
{
/**********FOUND**********/
int i,sum=1;
/**********FOUND**********/
for(i=2;i<=100;i+=1)
sum+=i;
/**********FOUND**********/
pri 36、ntf("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)
/*-----—--———-—---————---—--—-———--—-----——————-———-——--
【程序改错】
——-—-----—-——-—-—---—-————-——--——--——-—-—-—--—--——--—---
37、
题目:函数fun的功能是:求1到20的阶乘的和。
请改正程序中的错误,使它能得出正确的结果。
----——--————-----—-—-————--———---——---——-——--—----——-——-
注意:不可以增加或删除程序行,也不可以更改程序的结构.
—----—-————-——--—-—-—-———--—-——-———-—-—----——————--——-*/
fun()
{
int n,j;
float s=0.0,t=1。0;
for(n=1;n<=20;n++)
{
/**********F 38、OUND**********/
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;
39、 3). s= s + t ; 或 s+=t; 或 s=t+s;
4). printf(”jiecheng=%f\n",s);
〖第2题〗『程序改错』(5分)(题号:412)
/*-—-——----——-—--———--—--—————-————-——---—-——————-------
【程序改错】
-——---————----—---——--—----——----————---—-——---—-———----
题目:将一个正整数分解质因数。例如:输入90,打印出
90=2*3*3*5
—-—-—-——----——— 40、——-———-—--—-————---——----—-—--—-—-----
注意:不可以增加或删除程序行,也不可以更改程序
的结构。
—--—----——--————--—————-—-------—————---—-—---————-———*/
#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********* 41、*/
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)
/*—-----—--———-- 42、—-------——-———————-——--———-——--——-—-——
【程序改错】
—-——————--—-————--—--—--——-———--————--——----—----————-——
题目:编写函数fun计算下列分段函数的值:
x*20 x〈0且x≠—3
f(x)= sin(x) 0≤x〈10且x≠2及x≠3
x*x+x—1 其它
———-—--——-—-—--——--—-—--—-—--—---——-—---———-------——--—-
43、注意:不可以增加或删除程序行,也不可以更改程序的结构。
———--——--———----—-—-————-—--————-———--——-————-—-----—-*/
#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)
44、
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);
45、
〖第1题〗『程序改错』(5分)(题号:444)
/*—----——---——-——--—---—-—------—-——---——-———————-———--—
【程序改错】
-—-—-------—-————-——---——-——--—--—--—--------—--——--——--
题目:求100以内(包括100)的偶数之和。
—---——--—-——-——---———-—-——-----—-——-—--—-—-—-—----—-————
注意:不可以增加或删除程序行,也不可以更改程序的结构。
—--—----—------—-—--—--- 46、—---—-——-————----————-----———*/
#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)
47、
3). printf("Sum=%d \n”,sum);
〖第2题〗『程序改错』(5分)(题号:435)
/*—-—-—-——--—--————-—-—--—---—-—-——------—--—---—-—-————
【程序改错】
-—-——--—--—----—-——--—-————--——-------——-—-——————-—---—-
题目:编写一个程序计算某年某月有几天
。(注意要区分闰年)
-——---—————-———-—-—----—-———-—---—--—-——----———-——------
注意:不 48、可以增加或删除程序行,也不可
以更改程序的结构。
-—-——--——-————-----—--—---———-—--———---—--—————-———---*/
#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:
l 49、en=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,l 50、en);
getch();
}
答案:
1). switch(mm)
2). break;
3)。 default :
〖第3题〗『程序改错』(5分)(题号:404)
/*——-----————---—-—-—-———-—-——----—-------——-—---——--——-
【程序改错】
--—--——---—-—----—————--————----—-———-—-——-———-—------—-
题目:编写函数fun求20以内所有5的倍数之积。
--—-—-———-—--————--—-—-—
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818