c语言用动态数组编程输入任意m个班学生(每班个n学生)的某门课的成绩,计算最高分,并指出具有这最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。
时间: 2024-05-15 22:16:20 浏览: 100
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n;
printf("请输入班级数m和学生数n:");
scanf("%d%d", &m, &n);
// 动态分配二维数组
int **scores = (int **)malloc(m * sizeof(int *));
for (int i = 0; i < m; i++) {
scores[i] = (int *)malloc(n * sizeof(int));
}
// 输入成绩
for (int i = 0; i < m; i++) {
printf("请输入第%d个班的%d个学生成绩:\n", i+1, n);
for (int j = 0; j < n; j++) {
scanf("%d", &scores[i][j]);
}
}
// 计算最高分和对应学生的班级和序号
int max_score = scores[0][0];
int max_class = 1, max_student = 1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (scores[i][j] > max_score) {
max_score = scores[i][j];
max_class = i+1;
max_student = j+1;
}
}
}
printf("最高分为%d,对应学生是第%d个班的第%d个学生。\n", max_score, max_class, max_student);
// 释放动态分配的二维数组
for (int i = 0; i < m; i++) {
free(scores[i]);
}
free(scores);
return 0;
}
```
阅读全文