C语言程序改错.docx
《C语言程序改错.docx》由会员分享,可在线阅读,更多相关《C语言程序改错.docx(55页珍藏版)》请在冰豆网上搜索。
C语言程序改错
〖第1题〗『程序改错』(5分)(题号:
422)
/*
【程序改错】
题目:
给一个不多于5位得正整数,要求:
一、求它就是几位数,二、逆序打印出各位数字。
注意:
不可以增加或删除程序行,也不可以更改程序
得结构。
*/
#include"stdio、h"
main()
{
********FOUND********
longa,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("thereare5,%ld%ld%ld%ld%ld\n",e,d,c,b,a);elseif(b!
=0)printf("thereare4,%ld%ld%ld%ld\n",e,d,c,b);elseif(c!
=0)printf("thereare3,%ld%ld%ld\n",e,d,c);elseif(d!
=0)printf("thereare2,%ld%ld\n",e,d);
elseif(e!
=0)printf("thereare1,%ld\n",e);getch();
}
答案:
1)、
longa,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()
{inta,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个数得平均值注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/floataverage(floatarray[10]){
inti;
floataver,sum=array[0];
*********FOUND*********
for(i=0;i<10;i++)
sum=sum+array[i];
aver=sum/10、0;return(aver);
}
main()
{
*********FOUND*********
intscore[10],aver;
inti;
printf("input10scores:
\n");for(i=0;i<10;i++)
*********FOUND*********
scanf("%f",score);printf("\n");
*********FOUND*********
(5分)(题号:
414)
aver=average(score[10]);printf("averagescoreis%5}答案:
1)、for(i=1;i<10;i++)
2)、floatscore[10],aver;
3)、scanf("%f",&score[i]);
4)、aver=average(score);〖第2题〗『程序改错』
、2f",aver);
或for(i=1;i<=9;i++)
或floataver,score[10];
或scanf("%f",score+i)
/*
【程序改错】
题目:
输入一行字符,分别统计出其中英文字母、空格、数字与其它字符得个数。
注意:
不可以增加或删除程序行,也不可以更改程序
得结构。
*/#include"stdio、h"main()
{charc;
intletters=0,space=0,digit=0,others=0;printf("pleaseinputsomecharacters\n");
********FOUND********
while((c=getchar())=='\n')
{
********FOUND********
if(c>='a'&&c<='z'&&c>='A'&&c<='Z')
letters++;
********FOUND********
elseif(c=!
'')space++;
elseif(c>='0'&&c<='9')digit++;
elseothers++;
}
printf("allinall:
char=%dspace=%ddigit=%dothers=%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)、elseif(c=='')
〖第3题〗『程序改错』(5分)(题号:
250)
/*
【程序改错】题目:
以下程序输出前六行杨辉三角形,即
1
11
121
1331
14641
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/main()
{
staticinta[6][6];
inti,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条错误语句,请改正错误。
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/voidsort(intx[],intn)
{
inti,j,k,t;
for(i=0;i********FOUND********
for(j=0;j********FOUND********
if(x[i]>x[i+1])
{t=x[j];x[j]=x[j+1];x[j+1]=t;}}
main()
{
inti,n,a[100];
printf("pleaseinputthelengthofthearray:
\n");scanf("%d",&n);
for(i=0;i********FOUND********
scanf("%d",a[i]);
********FOUND********
sort(n,a);printf("outputthesortedarray:
\n");for(i=0;i<=n-1;i++)printf("%5d",a[i]);
printf("\n");
}
答案:
1)
或for(j=0;j、for(j=0;jj;j++)+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]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"
#defineN1000main(){intsum;
sum=fun(8);
printf("%d以内所有%d得倍数之与为:
%d\n",N,8,sum);getch();
}
intfun(intm)
{
********FOUND********
ints=0;i;
/**********FOUND**********/for(i=1;i>N;i++)/**********FOUND**********/
if(i/m==0)s+=i;
returns;}
答案:
1)、
ints=0,i;
2)、
for(i=1;i3)、
if(i%m==0)
〖第3题〗『程序改错』(5分)(题号:
444)
/*
【程序改错】题目:
求100以内(包括100)得偶数之与、
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/#include"stdio、h"main()
{
********FOUND********
inti,sum=1;
********FOUND********
for(i=2;i<=100;i+=1)
sum+=i;
********FOUND********
printf("Sum=%d\n";sum);getch();
}
答案:
1)、
2)、
inti,sum=0;
for(i=2;i<=100;i+=2)
3)、printf("Sum=%d\n",sum);
第1题〗『程序改错』(5分)(题号:
14)
/*
【程序改错】
题目:
函数fun得功能就是:
求1到20得阶乘得与。
请改正程序中得错误,使它能得出正确得结果。
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/fun()
{
intn,j;
floats=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"floatMin=0;intJ=0;
floatfun(floatarray[],intn)
{
inti;floatsum=0,ave;
Min=array[0];
for(i=0;i{if(Min>array[i])Min=array[i];
********FOUND********
sum=+array[i];}
********FOUND********
ave=sum\n;
for(i=0;i********FOUND********
if(array[i]=Min)J++;return(ave);
}
main()
{
floata[10],ave;
inti=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********
inti,sum=1;
********FOUND********
for(i=2;i<=100;i+=1)
sum+=i;
********FOUND********
printf("Sum=%d\n";sum);getch();
}答案:
1)、inti,sum=0;
2)、for(i=2;i<=100;i+=2)
3)、printf("Sum=%d\n",sum);
〖第1题〗『程序改错』(5分)(题号:
14)/*
【程序改错】
题目:
函数fun得功能就是:
求1到20得阶乘得与。
请改正程序中得错误,使它能得出正确得结果。
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/
fun()
{
intn,j;
floats=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;
3)、
s=s+t;
或s+=t;
4)、
printf("jiecheng=%f\n",s);
或t=j*t;或s=t+s;
}
〖第2题〗『程序改错』(5分)(题号:
412)
/*
【程序改错】
90,打印出
题目:
将一个正整数分解质因数。
例如:
输入
90=2*3*3*5
注意:
不可以增加或删除程序行,也不可以更改程序
得结构。
*/#include"stdio、h"main()
{
intn,i;
printf("\npleaseinputanumber:
\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)n=n%i;
{
********FOUND********
while(n==i)
{
********FOUND********
if(n%i==1)
{printf("%d*",i);
********FOUND********
}
elsebreak;
}
}printf("%d",n);
}
答案:
1)、while(n!
=i)
2)、if(n%i==0)或if(!
(n%i))
3)、n=n/i;
〖第3题〗『程序改错』(5分)(题号:
449)/*
【程序改错】题目:
编写函数fun计算下列分段函数得值:
x*20x<0且x工-3
f(x)=sin(x)0wx<10且xm2及xm3
x*x+x-1其它
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/#include"math、h"
#include"stdio、h"
floatfun(floatx){
********FOUND********
floaty
********FOUND********
if(x<0||x!
=-3、0)
y=x*20;
elseif(x>=0&&x<10y=sin(x);
0&&x!
=2、0&&x!
=3
0)
elsey=x*x+x-1;
********FOUND********
returnx;
}
main()
{floatx,f;
printf("Inputx=");scanf("%f",&x);
f=fun(x);printf("x=%f,f(x)=%f\n",x,f);
getch();
}
答案:
1)、
floaty;
2)、
if(x<0&&x!
=-3
、0)
3)、
returny;或
return(y);
〖第1
题〗『程序改错』(5
分)(题号:
444)
/*
程序改错】
题目:
求100以内(包括100)得偶数之与、
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
*/#include"stdio、h"
main()
{
********FOUND********
inti,sum=1;
********FOUND********
for(i=2;i<=100;i+=1)
sum+=i;
********FOUND********
printf("Sum=%d\n";sum);getch();
}
答案:
1)、
inti,sum=0;
2)、
for(i=2;i<=100;i+=2)
3)、
printf("Sum=%d\n",sum);
〖第2题〗『程序改错』(5分)(题号:
435)
/*
【程序改错】题目:
编写一个程序计算某年某月有几天
。
(注意要区分闰年)
注意:
不可以增加或删除程序行,也不可
以更改程序得结构。
*/#includevoidmain()
{
intyy,mm,len;
printf("year,month=");scanf("%d%d",&yy,&mm);
********FOUND********
switch(yy)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
len=31;
********FOUND********
breakcase4:
case6:
case9:
case11:
len=30;break;
case2:
if(yy%4==0&&yy%100!
=0||yy%400==0)len=29;
else
len=28;break;
********FOUND********
defaultprintf("inputerror!
\n");break;
}
printf("Thelengthof%d%did%d\n",yy,mm,len);
getch();
}
答案:
1)、
switch(mm)
2)、
break;
3)、
default:
〖第3题〗『程序改错』(5