使用c语言【问题描述】编写程序,输入m个班的n个学生的某门课成绩,计算最高分,并指出具有最高分的学生是第几个班的第几个学生。要求用动态数组实现。
时间: 2024-04-30 16:20:41 浏览: 167
以下是使用C语言编写的程序,实现输入m个班的n个学生的成绩,计算最高分,并指出具有最高分的学生是第几个班的第几个学生。程序中使用了动态数组来存储成绩信息。
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n;
printf("请输入班级数m和每个班级的学生数n:\n");
scanf("%d %d", &m, &n);
int **score = (int **)malloc(m * sizeof(int *)); // 动态分配二维数组
for (int i = 0; i < m; i++) {
score[i] = (int *)malloc(n * sizeof(int));
}
int max_score = 0, max_class = 0, max_student = 0;
for (int i = 0; i < m; i++) {
printf("请输入第%d个班级的%d个学生成绩:\n", i + 1, n);
for (int j = 0; j < n; j++) {
scanf("%d", &score[i][j]);
if (score[i][j] > max_score) { // 记录最高分及其所在的班级和学生
max_score = score[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(score[i]);
}
free(score);
return 0;
}
```
程序运行时,先输入班级数m和每个班级的学生数n,然后根据输入的班级数和学生数动态分配二维数组。接下来,循环输入每个班级的学生成绩,同时记录最高分及其所在的班级和学生。最后输出最高分及其所在的班级和学生,并释放动态分配的内存。
阅读全文