一个C语言语言问题?

来源:百度知道 编辑:UC知道 时间:2024/05/03 11:44:45
题目是:
10个评委给20个歌手打分,歌手的最后成绩为各评委给出的分数中,去掉最高分,最低分后算出的平均分,输出每个歌手的最终成绩.
我设计的程序是:
main()
int i,j;
float a[20][10],max,min,sum,aver;
for(i=0;i<20;i++)
for(j=0;j<10;j++)
scanf(" %f",&a[i][j]);
for(i=0;i<20;i++)
sum=0.0;
for(j=0;j<10;j++)
{max=a[0][0];min=a[1][1];
if(a[i][j]>a[0][0])
max=a[i][j];
if(a[i][j]<a[0][0])
min=a[i][j];
max=0;min=0;
sum+=a[i][j];
aver=sum/8;
printf("aver=%f",aver);
}
}
这个程序,错在哪里,请高手给指点!
main()
{int i,j;
float a[20][10],*max,*min,sum,aver;
for(i=0;i<20;i++)
for(j=0;j<10;j++)
scanf(" %f",a[i][j]);
for(i=0;i<20;i++)
{sum=0.0;
max=&a[i][0];
min=&a[i][0];
for(j=1;j<10;j++)
{
if(*max<=a[i][j])
max=&a[i][j];

语法上有两个错误。
1:main()后面少了个"{"
2:"scanf(" %f",&a[i][j]);"中a前面的“&”去掉。
而你后面找最大最小那里却是一塌糊涂。需要重新设计算法。
根据你的思路,建议你使用数组指针,令俩指针分别指向每一维最大最小的俩元素后令其为0,接着累加求和再求平均。
下面是我写的。给你做参考:
main()
{int i,j;
float a[20][10],*max,*min,sum,aver;
for(i=0;i<20;i++)
for(j=0;j<10;j++)
scanf(" %f",a[i][j]);
for(i=0;i<20;i++)
{sum=0.0;
max=&a[i][0];
min=&a[i][0];
for(j=1;j<10;j++)
{
if(*max<=a[i][j])
max=&a[i][j];
if(*min>a[i][j])
min=&a[i][j];

}
*max=0; *min=0; /*去掉最高最低分*/
for(j=0;j<10;j++)
sum+=a[i][j];
aver=sum/8;
printf("the player score is :%f",&aver);

}
}

我靠"scanf("%d",&a[i][j])"是对的,楼上的怎么看的书哦!````````````````
还可以写为"scanf("%d",a)".
你如果用的是VC++可以打开<stdio.h>头文件包看看标准输入函数scanf的定义 ,它的参数应该是地址.

我是04111x,a[][]前面应该有&