假如有十个学生五门课程,如何求每门课程的最高分与最低分对应的学生,用for循环语句。
定义一个10行5列的数组,每一列表示一个学生的5门课程的成绩,从第一行开始遍历每一行,分别找出每一行的最大值和最小值。
下面这几处改一下
完整代码如下:
#include <stdio.h>
#include <math.h>
void input_score(int score[10][5]); // 声明输入函数
void max_course(int score[10][5]); // 声明求最大数函数
int main(int argc, const char *argv[])
{
int sc[10][5];
input_score(sc); // 调用输入函数
max_course(sc); // 调用求最大数函数
printf("\n");
return 0;
}
// 输入函数
void input_score(int score[10][5])
{
int i, j;
for (i = 0; i < 10; i++)
{
printf("第%d个学生的成绩:\n", i + 1);
for (j = 0; j < 5; j++)
{
scanf("%d", &score[i][j]);
}
}
}
// 求最大数函数
void max_course(int score[10][5])
{
int i, j, max = 0, stu = 0, cour = 0;
for (i = 0; i < 10; i++){
max = -1;
for (j = 0; j < 5; j++)
if (score[i][j] > max)
{
max = score[i][j];
stu = i + 1;
cour = j + 1;
}
printf("第%d个学生的第%d门课获得了%d的最高分\n", stu, cour, max);
}
}