法治在线考试平台:程序改错

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 05:22:56
#include <stdio.h>
#include <conio.h>
#define M 10
int fun(int *a,int *n,int pos max)
{
int i,k,max=a[0];
for(i=0;i<M;i++)
if(a[i]>=max) max=a[i];
for(i=0;i<M;i++)
if(a[i]=max) pos[k++]=i;
*n=k
return max;
}

main()
{
int a[M],pos[M],i,j,n;
clrscr();
printf("Enter 10 number:");
for(i=0;i<M;i++)
scanf("%d",a[i]);
j=fun(a,&n,pos);
printf("The max: %d\n",j);
printf("The position:");
for(i=0;i<M;i++)
printf("%4d",pos[i]);
printf("\n");
}
给定程序MODI8.C中,函数fun的功能是:将数组a的元素的最大值及最大值所在位置输出。
最大值可能不止一个,用pos[M]来存放最大值元素的位置。
例如a数组元素为10,20,30,20,30,10,20,30,10,20,
则输出The max:30和The position: 2 4 7。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!

全部错误如下:
1. int fun(int *a,int *n,int pos max)应该为int fun(int *a,int *n,int *pos);
2. int i,k,max=a[0];应该为int i,k=0,max=a[0];
3. if(a[i]=max)应该为if(a[i]==max)
4. scanf("%d",a[i])应该为scanf("%d",&a[i]);
5. 第二个for(i=0;i<M;i++)应该为for(i=0;i<n;i++)
这么多错误,是不是应该追加一些分数?!

int i,k,max=a[0]; //k应有初始值=0

if(a[i]=max) pos[k++]=i; //这里错了,if(a[i]==max)

for(i=0;i<M;i++) //这里错了,for(i=0;i<N;i++)
printf("%4d",pos[i]);

应该就这三处错误了,别的没看出来

错误提示都没给我们?
我们哪有时间又去复制,运行一次呀