回复 楼主 王寅森
以下代码是我在你原有的代码基础上修改过来的,不知是否符合你的要求?C语言学习过程中,欢迎指教!
具体代码如下:
#include <stdio.h>
// #include <stdlib.h> 这个头文件可以不要
int main()
{
int i,j,n;
// 下面两句是解决 n 的赋值
printf("请输入参赛学生人数: ");
scanf(" %d", &n);
// int a[n][8],max,min;
double a[n][8],max,min;
// int ave,sum=0;
double ave = 0.0,sum = 0.0;
/* 主要是第一个for缺少大括号
for(i=0;i<n;i++)
for(j=0;j<8;j++)
{
scanf("%lf",&a[i][j]);
}
*/
for(i=0;i<n;i++)
{
printf("\n学生 %d:", i + 1);
for(j=0;j<8;j++)
{
printf("\n评委 %d分数: ", j + 1);
scanf(" %lf",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
//sum=max=min=a[i][0];
sum = 0.0; // 在统计每位学生之前时,对sum初始化
max=min=a[i][0];
//for(j=1;j<8;j++)
for(j=0;j<8;j++) //j从0开始,才有8位评委分数
{
if(a[i][j]>max)
max=a[i][j];
//else if(a[i][j]<min)
if(a[i][j]<min) // 这是另外一种情况,用if就可以了
min=a[i][j];
sum+=a[i][j];
}
ave=(sum-max-min)/6;
//printf("%.lf\n",ave);
printf("学生%d:ave = %.2lf\n", i + 1, ave); //主要是%.lf问题,一般平均数保留两位小数,用%.2lf输出,如果不保留小数,用%lf输出
//return 0;
}
return 0;
}