n=n/10;
}while(n);
/**************Error**************/
zero=count;
returnmax;
}
main()
{unsignedn;intzero,max;
printf("\nInputn(unsigned):
");scanf("%d",&n);
max=fun(n,&zero);
printf("\nTheresult:
max=%dzero=%d\n",max,zero);
}
【改错1】错误
【学生答案】
if(t=0)
【参考答案】
if(t==0)
if(!
t)
if(0==t)
============================================================
【改错2】错误
【学生答案】
zero=count;
【参考答案】
*zero=count;
============================================================
/*给定程序modi.c中函数fun的功能是:
计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
*/
#include
#include
#include
#include
#defineN80
intfun(char*s,char*t)
{intn;
char*p,*r;
n=0;
while(*s)
{p=s;
/*********Error**********/
r=p;
while(*r)
if(*r==*p){r++;p++;}
elsebreak;
/*********Error**********/
if(*r=O)
n++;
s++;
}
returnn;
}
main()
{chara[N],b[N];intm;
system("cls");
printf("\nPleaseenterstringa:
");gets(a);
printf("\nPleaseentersubstringb:
");gets(b);
m=fun(a,b);
printf("\nTheresultis:
m=%d\n",m);
}
【改错1】错误
【学生答案】
r=p;
【参考答案】
r=t;
============================================================
【改错2】错误
【学生答案】
if(*r=O)
【参考答案】
if(*r=='\0')
if('\0'==*r)
if(*r==NULL)
if(NULL==*r)
if(r[0]==NULL)
if(NULL==r[0])
if(!
r[0])
if(!
(*r))
if(r[0]=='\0')
if('\0'==r[0])
============================================================
/*给定程序modi.c中,函数fun的功能是:
将十进制正整数m转换成k(2≤k≤9)进制数,
并按位输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请改正程序中的错误,使它能得出正确结果。
*/
#include
#include
#include
voidfun(intm,intk)
{
intaa[20],i;
for(i=0;m;i++)
{
/************Error************/
aa[i]=m/k;
m/=k;
}
/************Error************/
for(;i;i--)
printf("%d",aa[i]);
}
main()
{
intb,n;
system("cls");
printf("\nPleaseenteranumberandabase:
\n");
scanf("%d%d",&n,&b);
fun(n,b);
printf("\n");
}
【改错1】错误
【学生答案】
aa[i]=m/k;
【参考答案】
aa[i]=m%k;
============================================================
【改错2】错误
【学生答案】
for(;i;i--)
【参考答案】
for(i=i-1;i>=0;i--)
for(i=i-1;i>=0;--i)
for(i=i-1;i>=0;i=i-1)
for(i=i-1;i>=0;i-=1)
for(i=i-1;i>=0;i=-1+i)
for(i-=1;i>=0;i--)
for(i-=1;i>=0;--i)
for(i-=1;i>=0;i=i-1)
for(i-=1;i>=0;i-=1)
for(i--;i>=0;i--)
for(i--;i>=0;--i)
for(i--;i>=0;i=i-1)
for(i--;i>=0;i-=1)
for(i--;i>=0;i=-1+i)
for(--i;i>=0;i--)
for(--i;i>=0;--i)
for(--i;i>=0;i=i-1)
for(--i;i>=0;i-=1)
for(--i;i>=0;i=-1+i)
for(i-=1;i>=0;i=-1+i)
============================================================
/*给定程序MODI1.C中fun函数的功能是:
将p所指字符串中每个单词的最后一个字母改成大写。
(这里的"单词"是指由空格隔开的字符串)。
例如,若输入
"Iamastudenttotaketheexamination.",
则应输出"IaMAstudenTtOtakEthEexamination."。
请修改程序中的错误之处,使它能得出正确的结果。
*/
#include
#include
#include
voidfun(char*p)
{
intk=0;
for(;*p;p++)
if(k)
{
/**********Error***********/
if(p=='')
{
k=0;
/**********Error***********/
*(p-1)=toupper(*(p-1))
}
}
else
k=1;
}
main()
{
charchrstr[64];
intd;
printf("\nPleaseenteranEnglishsentencewithin63letters:
");
gets(chrstr);
d=strlen(chrstr);
chrstr[d]='';
chrstr[d+1]=0;
printf("\n\nBeforechanging:
\n%s",chrstr);
fun(chrstr);
printf("\nAfterchanging:
\n%s",chrstr);
}
【改错1】错误
【学生答案】
if(p=='')
【参考答案】
if(*p=='')
if(''==*p)
if(*p==32)
if(32==*p)
============================================================
【改错2】错误
【学生答案】
*(p-1)=toupper(*(p-1))
【参考答案】
*(p-1)=toupper(*(p-1));
============================================================
/*给定程序modi.c中函数fun的功能是:
在字符串的最前端加入n个*号,形成新串,并且覆盖原串。
注意:
字符串的长度最长允许为79。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
*/
#include
#include
#include
#include
voidfun(chars[],intn)
{
chara[80],*p;
inti;
/**********Error***********/
s=p;
for(i=0;ido
{a[i]=*p;
i++;
/**********Error***********/
}while(*p);
a[i]=0;
strcpy(s,a);
}
main()
{intn;chars[80];
system("cls");
printf("\nEnterastring:
");gets(s);
printf("\nThestring\"%s\"\n",s);
printf("\nEntern(numberof*):
");scanf("%d",&n);
fun(s,n);
printf("\nThestringafterinster:
\"%s\"\n",s);
}
【改错1】错误
【学生答案】
s=p;
【参考答案】
p=s;
p=&s[0];
============================================================
【改错2】错误
【学生答案】
}while(*p);
【参考答案】
}while(*p++);
}while(*(p++));
============================================================
/*给定程序modi.c中,fun函数的功能是:
先从键盘上输入一个3行3列矩阵的各个元素的值,
然后输出主对角线元素之积。
请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
*/
#include
intfun()
{
inta[3][3],sum;
inti,j;
/************Error************/
_______;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
/************Error************/
scanf("%d"a[i][j]);
}
for(i=0;i<3;i++)
sum=sum*a[i][i];
printf("Sum=%d\n",sum);
}
main()
{fun();}
【改错1】错误
【学生答案】
_______;
【参考答案】
sum=1;
============================================================
【改错2】错误
【学生答案】
scanf("%d"a[i][j]);
【参考答案】
scanf("%d,",&a[i][j]);
scanf("%d",&a[i][j]);
============================================================
/*给定程序modi.c中,函数fun的功能是:
从整数1到55之间,选出能被3整除、且至少有一位上的数
是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。
规定,函数中a1中放个
位数,a2放十位数。
请改正程序中的错误,使它能得出正确结果。
*/
#include
fun(int*b)
{intk,a1,a2,i=0;
for(k=10;k<=55;k++)
{
/************Error************/
a2=k%10;
a1=k-a2*10;
if((k%3==0&&a2==5)||(k%3==0&&a1==5))
{b[i]=k;i++;}
}
/************Error************/
returnk;
}
main()
{inta[100],k,m;
m=fun(a);
printf("Theresultis:
\n");
for(k=0;k}
【改错1】错误
【学生答案】
a2=k%10;
【参考答案】
a2=k/10;
============================================================
【改错2】错误
【学生答案】
returnk;
【参考答案】
returni;
return(i);
============================================================
/*给定程序MODI1.C中函数fun的功能是:
交换主函数中两个变量的值。
例如:
若变量a中的值原为8,
b中的原值为3。
程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它能得出正确结果。
*/
#include
/*********Error**********/
voidfun(intx,inty)
{
intt;
/*********Error**********/
t=x;x=y;y=t;
}
main()
{
inta,b;
a=8;b=3;
fun(&a,&b);
printf("%d,%d\n",a,b);
}
【改错1】错误
【学生答案】
voidfun(intx,inty)
【参考答案】
voidfun(int*x,int*y)
============================================================
【改错2】错误
【学生答案】
t=x;x=y;y=t;
【参考答案】
t=*x;*x=*y;*y=t;
t=*y;*y=*x;*x=t;
============================================================
/*在主函数中从键盘输入若干个数放入数组中,输入0结束输入并放在最后一个元素中。
给定程序modi.c中函数fun的功能是:
计算数组元素中值为正数的平均值(不包括0)。
例如:
数组中元素中的值依次为:
39,-47,21,2,-8,15,0,
则程序的运行结果为:
19.250000。
请改正函数fun中的错误,使它能得出正确的结果。
*/
#include
#include
#include
doublefun(intx[])
{
/************Error************/
intsum=0.0;
intc=0,i=0;
while(x[i]!
=0)
{if(x[i]>0){
sum+=x[i];c++;}
i++;
}
/************Error************/
sum\=c;
returnsum;
}
main()
{intx[1000];inti=0;
system("cls");
printf("\nPleaseentersomedata(endwith0):
");
do
{scanf("%d",&x[i]);}
while(x[i++]!
=0);
printf("%f\n",fun(x));
}
【改错1】错误
【学生答案】
intsum=0.0;
【参考答案】
floatsum=0.0;
doublesum=0.0;
============================================================
【改错2】错误
【学生答案】
sum\=c;
【参考答案】
sum=sum/c;
sum/=c;
============================================================
/*给定程序MODI1.C中函数fun的功能是:
将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。
例如,若输入"Ab,cD",则输出"AB