printf("%5d",a[i]);
printf("\n");
}
答案:
位置1:
scanf("%d",&number);
位置2:
for(i=N-2;i>=0;i--)【或】for(i=N-2;0<=i;i--)
位置3:
a[i+1]=a[i];【或】a[1+i]=a[i];
位置4:
break;
综合一
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
假定输入的字符串中只包含字母和*号。
编写程序只删除字符串的前面*号。
例如,******ACF*F*G****,删除后,字符串中的字符为ACF*F*G****
程序中共有3条错误语句,请改正错误。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
#include
voidfun(chara[]);
main()
{chara[80];
gets(a);
fun(a);
puts(a);
}
voidfun(chara[])
{
/**********ERROR**********/
inti=0,j;
/**********ERROR**********/
while(a[i]!
='*')i++;
/**********ERROR**********/
while(a[i]=='\0')a[j++]=a[i++];
a[j]='\0';
}
答案:
位置1:
inti=0,j=0;
位置2:
while(a[i]=='*')i++;
位置3:
while(a[i])a[j++]=a[i++];【或】while(a[i]!
='\0')a[j++]=a[i++];【或】while(a[i]!
=0)a[j++]=a[i++];
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
编程序求一维数组中的最大和最小的元素值.
------------------------------------------------------*/
#include
#defineN10
intmax;
/***********ERROR***********/
intmaxmin(intarr[],n)
{
inti,min;
/***********ERROR***********/
max=min=0;
for(i=1;i{
/***********ERROR***********/
if(arr[i]if(arr[i]}
returnmin;
}
main()
{
intarray[N]={10,7,19,29,4,0,7,35,-16,21},min;
/***********ERROR***********/
min=maxmin(intarray,intN);
printf("max=%d,min=%d",max,min);
}
答案:
位置1:
intmaxmin(intarr[],intn)【或】maxmin(intarr[],intn)
位置2:
max=min=arr[0];【或】max=arr[0],min=arr[0];【或】max=arr[0];min=arr[0];
位置3:
if(arr[i]>max)max=arr[i];【或】if(max位置4:
min=maxmin(array,N);
综合二
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
用下面的和式求圆周率的近似值。
直到最后一项的绝对值
小于等于0.0001。
π111
-=1--+---+...
4357
------------------------------------------------------*/
#include"stdio.h"
#include"math.h"
fun()
{
inti=1;
/**********ERROR**********/
ints=0,t=1,p=1;
/**********ERROR**********/
while(fabs(t)<=1e-4)
{
s=s+t;
p=-p;
i=i+2;
t=p/i;
}
/**********ERROR**********/
printf("pi=%d\n",s*4);
}
main()
{
fun();
}
答案:
位置1:
floats=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;
位置2:
while(fabs(t)>1e-4)【或】while(0.00010.0001)
位置3:
printf("pi=%f\n",s*4);
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
定义一个4×4的二维数组a,数组元素的值由键盘输入,
输出主对角线元素的最大值。
如:
输入2357
6673
3757
1357
输出:
主对角线元素的最大值是7
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include"stdio.h"
#defineN4
intfun(inta[N][N])
{inti,max;
/**********ERROR**********/
max==a[0][0];
for(i=0;i/**********ERROR**********/
if(a[i][i]max=a[i][i];
returnmax;
}
main()
{inta[N][N],i,j;
printf(