#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);
}
是哪里出问题了?
问题呢?我的出在哪?
追答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是学生编号和课程号。
问题出现在,第一,很多东西不定义就去使用 第二,函数的调用掌握的不好。建议仔细看看书。