printf("%5d",a[i]);
printf("\n");
}
-------------------------------------
『错误答案』:
1scanf("%d",&number);
2for(i=N-2;i>=0;i--)或for(i=N-2;0<=i;i--)
3a[i+1]=a[i];
4break;}
------------------------------------
5【程序改错】
题目:
将一个字符串中第m个字符开始的全部字符复制成为另一
个字符串。
程序中共有4条错误语句,请改正错误。
-------------------------------------
#include
voidstrcopy(char*str1,char*str2,intm)
/**********FOUND**********/
{charp1,p2;
inti,j;
/**********FOUND**********/
p1=str1+m;
p2=str2;
/**********FOUND**********/
if(*p1);
*p2++=*p1++;
*p2='\0';
}
main()
{
inti,m;
char*p1,*p2,str1[80],str2[80];
p1=str1;
p2=str2;
gets(p1);
scanf("%d",&m);
/**********FOUND**********/
strcat(str1[0],str2[0],m);
puts(p1);puts(p2);
}
-------------------------------------『错误答案』:
1{char*p1,*p2;或{char*p2,*p1;
2p1=str1+m-1;或p1=-1+str1+m;
3while(*p1)
4strcopy(str1,str2,m);
-------------------------------------
6【程序改错】
题目:
以下程序的功能是求如下表达式:
S=1+1/(1+2)+1/(1+2+3)+
1/(1+2+3+4)…
请改正程序中的错误,使程序能得到正确的运行结果。
#include
main()
{
intn;
floatfun();
printf("Pleaseinputanumber:
");
/**********FOUND**********/
printf("%d",n);
printf("%10.6f\n",fun(n));
}
/**********FOUND**********/
fun(intn)
{
inti,j,t;
floats;
s=0;
/**********FOUND**********/
for(i=1;i<=n;i++);
{
t=0;
for(j=1;j<=i;j++)
t=t+j;
/**********FOUND**********/
s=s+1/t;
}
returns;
}
『错误答案』:
1scanf("%d",&n);
2floatfun(intn)
3for(i=1;i<=n;i++)或for(i=1;n>=i;i++)或for(i=1;ii;i++)
4s+=1.0/t或s=s+1.0/(float)t;或s=s+1.0/t;或s+=1.0/(float)t
/*-----------------------------------
7【程序改错】
题目:
下面程序的功能是利用二维数组输出如图所示的图形。
*******
*****
***
*
***
*****
*******
请改正程序中的错误,使程序能得到正确的运行结果。
#include
/**********FOUND**********/
#defineN=7
main()
{
chara[N][N];
inti,j,z;
clrscr();
for(i=0;ifor(j=0;j/**********FOUND**********/
a[i][j]=;
z=0;
for(i=0;i<(N+1)/2;i++)
{
for(j=z;ja[i][j]='*';
z=z+1;
}
/**********FOUND**********/
z=0;
for(i=(N+1)/2;i{z=z-1;
for(j=z;ja[i][j]='*';
}
for(i=0;i{
for(j=0;j/**********FOUND**********/
printf("%d",a[i][j]);
printf("\n");
}
}
『错误答案』:
1#defineN7
2a[i][j]='';
3z=z-1;或z--;或z=-1+z;或z=(n+1)/2-1;或z=(1+n)/2-1
4printf("%c",a[i][j]);
-------------------------------------
8题目:
输入一行英文文本,将每一个单词的第一个字母变成大
写。
例如:
输入"ThisisaCprogram.",输出为"This
IsACProgram."。
-------------------------------------
#include
#include
#include
/**********FOUND**********/
fun(charp)
{
intk=0;
/**********FOUND**********/
while(*p=='\0')
{
if(k==0&&*p!
='')
{
*p=toupper(*p);
/**********FOUND**********/
k=0;}
elseif(*p!
='')k=1;
elsek=0;
/**********FOUND**********/
*p+;
}
}
main()
{
charstr[81];
clrscr();
printf("pleaseinputaEnglishtextline:
");
gets(str);
printf("Theoriginaltextlineis:
");
puts(str);
fun(str);
printf("Thenewtextlineis:
");
puts(str);
}
『错误答案』:
1fun(char*p)或fun(charp[])
2while(*p!
='\0')或while(*p)
3k=1;}
4p++;或p=1+p;或++p;或p=p+1;
-------------------------------------
9【程序改错】
题目:
将一个字符串中的大写字母转换成小写字母。
例如:
输入aSdFG输出为asdfg。
-------------------------------------
#include
/**********FOUND**********/
charfun(charc)
{
if(*c<='Z'&&*c>='A')*c-='A'-'a';
/**********FOUND**********/
fun=c;
}
main()
/**********FOUND**********/
chars[81],*p=s;
gets(s);
while(*p)
{
*p=fun(p);
/**********FOUND**********/
puts(*p);
p++;
}
putchar('\n');
}
-------------------------------------『错误答案』:
1charfun(char*c)
2return*c;或return(*c);或return(*c);
3{chars[81],*p=s;
4putchar(*p);或printf("%c",*p);
-------------------------------------
10【程序改错】
题目:
将若干学生的档案存放在一个文件中,并显示其内容。
-------------------------------------
structstudent
{
intnum;
charname[10];
intage;
};
structstudentstu[3]={{001,"LiMei",18},{002,"JiHua",19},{003,"SunHao",18}};
#include
main()
/**********FOUND**********/
{structstudentp;
/**********FOUND**********/
filefp;
inti;
if((fp=fopen("stu_list","wb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
/**********FOUND**********/
for(*p=stu;pfwrite(p,sizeof(structstudent),1,fp);
fclose(fp);
fp=fopen("stu_list","rb");
printf("No.Nameage\n");
for(i=1;i<=3;i++)
{
fread(p,sizeof(structstudent),1,fp);
/**********FOUND**********/
printf("%4d%-10s%4d\n",*p.num,p->name,(*p).age);
}
fclose(fp);
}
-------------------------------------『错误答案』:
1{structstudent*p
2FILE*fp;
3for(p=stu;pp;p++)或for(p=stu;p<=stu+2;p++)或for(p=stu;stu+2>=p;p++)
4printf("%4d%-10s%4d\n",
(*p).num,p->name,(*p).age);
-------------------------------------
11【程序改错】
-------------------------------------题目:
下列给定程序中,函数fun的功能是:
判断m是否为素数,
若是返回1,否则返回0。
主函数的功能是:
按每行5个输
出1-100之间的全部素数。
请改正程序中的4个错误,使它能得出正确的结果。
-------------------------------------
main()
{
intm,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0)printf("\n");
}
}
/**********FOUND**********/
voidfun(intm)
{
inti,k=1;
if(m<=1)k=0;
/**********FOUND**********/
for(i=1;i/**********FOUND**********/
if(m%i=0)k=0;
/**********FOUND**********/
returnm;
}
『错误答案』:
1intfun(intm)或fun(intm)
2for(i=2;ii;i++)或for(i=2;i<=m-1;i++)或for(i=2;m-1=>i;i++)
3if(m%i==0)k=0;
4returnk;
-------------------------------------
【程序改错】
-------------------------------------
12题目:
函数fun的功能是:
用下面的和式求圆周率的近似值。
直
到最后一项的绝对值小于等于0.0001。
π111
—=1-—+—-—+...
2357
请改正程序中的错误,使它能得出正确的结果。
-------------------------------------
/**********FOUND**********/
#include"stdio.h"
fun()
{
inti=1;
/**********FOUND**********/
ints=0,t=1,p=1;
/**********FOUND**********/
while(fabs(t)<=1e-4)
{
s=s+t;
p=-p;
i=i+2;
t=p/i;
}
/**********FOUND**********/
printf("pi=%d\n",s*4);
}
main()
{
fun();
}
『错误答案』:
1#include"math.h"
2floats=0,t=1,p=1;
或floats=0,p=1,t=1;
或floatp=1,s=0,t=1;
或floatp=1,t=1,s=0;
或floatt=1,p=1,s=0;
或floatt=1,s=0,p=1;
3while(fabs(t)>1e-4)或while(0.00010.0001)
4printf("pi=%f\n",s*4);
13【程序改错】
题目:
下列给定程序中,函数fun的功能是:
求1到10的阶乘的
和。
主函数和fun函数中,各有两个错误,请改正,使其
能得到正确的运行结果。
-------------------------------------main()
{
inti;
floatt,s=0;
floatfac(intn);
/**********FOUND