输入10名学生5门课程的成绩,分别用函数求出: 每门课程的平均分; 找出最高分数所对应的学生和课程。

#include<stdio.h>
#define STUDENT 10
#define CLASS 5
// 全局变量
int student_i; // 最高分数所对应的学生的位置
int class_i; // 最高分数所对应的课程的位置
// 求每门课程的平均分的函数(根据course计算出的平均分保存到aver数组里面)
void average(int course[STUDENT][CLASS], float aver[CLASS])
{
int i,j,n;
for(i=0;i<5;i++)
{
n=0;
for(j=0;j<10;j++)
n=n+course[j][i];
aver[i]=n/10.0;
}
}

// 找出最高分数所对应的学生和课程的函数(最高分所对应的学生,课程位置保存到全局变量student_i和class_i中)
void highest(int course[STUDENT][CLASS])
{
int i,j,m,n,k;
m=course[0][0];
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(course[i][j]>m) {m=course[i][j];n=i;k=j;}
return m ;
}

int main()
{
int n,k;
int course[STUDENT][CLASS] = {{38, 45, 52, 70, 88}, {47, 58, 19, 65, 48}, {80, 19, 64, 5, 47}, {81, 69, 9, 43, 88}, {10, 96, 28, 90, 33}, {4, 88, 22, 43, 32}, {17, 94, 70, 67, 19}, {27, 82, 86, 67, 98}, {34, 4, 92, 15, 84}, {57, 9, 66, 76, 65}};
average(10,5);
for(i=0;i<5;i++)
printf("%5.2f ",aver[i]);
printf("\n");
max=highest(10);
printf("max=%3d,coure=%3d,student=%3d\n",max,n+1,k+1);
}
是哪里出问题了?

#include<stdio.h>
#define STUDENT 10
#define CLASS 5
// 全局变量
int student_i; // 最高分数所对应的学生的位置
int class_i; // 最高分数所对应的课程的位置
// 求每门课程的平均分的函数(根据course计算出的平均分保存到aver数组里面)
void average(int course[][CLASS], float aver[])
{
int i,j,n;
for(i=0;i<5;i++)
{
n=0;
for(j=0;j<10;j++)
n=n+course[j][i];
aver[i]=n/10.0;
}
}

// 找出最高分数所对应的学生和课程的函数(最高分所对应的学生,课程位置保存到全局变量student_i和class_i中)
int highest(int course[STUDENT][CLASS], int *n, int *k)
{
int i,j,m;
m=course[0][0];
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(course[i][j]>m) {m=course[i][j];*n=i;*k=j;}
return m;
}

int main()
{
int n,k,max;
int course[STUDENT][CLASS] = {{38, 45, 52, 70, 88}, {47, 58, 19, 65, 48}, {80, 19, 64, 5, 47}, {81, 69, 9, 43, 88}, {10, 96, 28, 90, 33}, {4, 88, 22, 43, 32}, {17, 94, 70, 67, 19}, {27, 82, 86, 67, 98}, {34, 4, 92, 15, 84}, {57, 9, 66, 76, 65}};
float aver[CLASS];
average(course,aver);
for(int i=0;i<5;i++)
printf("%5.2f ",aver[i]);
printf("\n");
max=highest(course,&n,&k);
printf("max=%3d,coure=%3d,student=%3d\n",max,n+1,k+1);
return 0;
}

搞定搞定 给分给分追问

问题呢?我的出在哪?

追答

void highest(int course[STUDENT][CLASS]) 改为 int highest(int course[STUDENT][CLASS], int *n, int *k) 函数返回类型应该是整形,n,k是最高分学生的编号和科目,所以要传出来,所以加了两个整形指针形参

主函数里int n,k; 改成 int n,k,max; 你没有定义max变量,加上。
主函数里加上float aver[CLASS]; 调用函数改成average(course,aver);表示把两个数组当做参数传到函数中去。
max=highest(course,&n,&k);这句的意思就是函数返回最高分的分值赋给max,变量n,k是学生编号和课程号。

问题出现在,第一,很多东西不定义就去使用 第二,函数的调用掌握的不好。建议仔细看看书。

温馨提示:答案为网友推荐,仅供参考
相似回答