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;}
『TurboC——程序改错』
/*------------------------------------------------------
【程序改错-5】
--------------------------------------------------------
题目:
将一个字符串中第m个字符开始的全部字符复制成为另一
个字符串。
程序中共有4条错误语句,请改正错误。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
voidstrcopy(char*str1,char*str2,intm)
/**********FOUND**********/
charp1,p2;
inti,j;
/**********FOUND**********/
=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】
--------------------------------------------------------
题目:
以下程序的功能是求如下表达式:
111
S=1+——+———+......+———————
1+21+2+31+2+3+......+n
请改正程序中的错误,使程序能得到正确的运行结果。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
main()
{
intn;
floatfun();
printf("Pleaseinputanumber:
");
/**********FOUND**********/
print("%d",n);
printf("%10.6f\n",fun(n));
}
/**********FOUND**********/
fun(intn)
{
inti,j,t;
floats;
s=0;
/**********FOUND**********/
while(i=1;i<=n;i++);
{
t=0;
for(j=1;j<=i;j++)
t=t+j;
/**********FOUND**********/
=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**********/
dowhile(*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**********/
boolfun(char*c)
{
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**********/
cfilefp;
inti;
if((fp=fopen("stu_list","w