C语言程序改错.docx
《C语言程序改错.docx》由会员分享,可在线阅读,更多相关《C语言程序改错.docx(57页珍藏版)》请在冰豆网上搜索。
![C语言程序改错.docx](https://file1.bdocx.com/fileroot1/2022-11/26/c6d9fca0-d0d3-470e-84b8-71546dcdb970/c6d9fca0-d0d3-470e-84b8-71546dcdb9701.gif)
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***********/
aver=average(score[10]);
printf("averagescoreis%5、2f",aver);
}
答案:
1)、for(i=1;i<10;i++)或for(i=1;i<=9;i++)
2)、floatscore[10],aver;或floataver,score[10];
3)、scanf("%f",&score[i]);或scanf("%f",score+i);
4)、aver=average(score);
〖第2题〗『程序改错』(5分)(题号:
414)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
输入一行字符,分别统计出其中英文字母、空
格、数字与其它字符得个数。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序
得结构。
------------------------------------------------------*/
#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++;
else
others++;
}
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;jj;j++)或for(j=0;jj;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"
#defineN1000
main()
{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)、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;或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得阶乘得与。
请改正程序中得错误,使它能得出正确得结果。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序得结构。
------------------------------------------------------*/