编写一个计算任意 m 行 n 列二维数组中元素的最大值,并指出其所在的行列下标值的函数,利用该函数和动态内存分配方法,计算任意 m 个班、每班 n 个学生的某门课成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。
时间: 2024-05-24 17:12:46 浏览: 103
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int* findMax(int** a, int m, int n){
int max = a[0][0];
int row = 0, col = 0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(a[i][j] > max){
max = a[i][j];
row = i;
col = j;
}
}
}
int* result = (int*)malloc(sizeof(int)*3);
result[0] = max;
result[1] = row;
result[2] = col;
return result;
}
int main(){
srand(time(NULL));
int m = 5, n = 4;
int** a = (int**)malloc(sizeof(int*)*m);
for(int i=0;i<m;i++){
a[i] = (int*)malloc(sizeof(int)*n);
for(int j=0;j<n;j++){
a[i][j] = rand()%101; //生成0~100之间的随机数
}
}
printf("二维数组为:\n");
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
printf("%d\t", a[i][j]);
}
printf("\n");
}
int* result = findMax(a, m, n);
printf("最大值为:%d,所在的行列下标为:(%d,%d)\n", result[0], result[1], result[2]);
for(int i=0;i<m;i++){
free(a[i]);
}
free(a);
free(result);
return 0;
}
阅读全文