📅  最后修改于: 2023-12-03 15:00:12.592000             🧑  作者: Mango
本评测考查C语言的数组概念和使用方法。下面是本题的具体描述和要求:
给定任意两个正整数N和M,编写一个C语言程序,实现以下功能:
请您提交一份能够顺利实现上述功能的C程序代码。您需要保证:
下面是一个可以对本题进行参考的,简短但不完整的代码,供您理解题目描述和整理思路:
#include <stdio.h>
int main() {
int n, m, i, j;
scanf("%d%d", &n, &m);
int a[n][m];
for (i = 0; i < n; ++i) {
for (j = 0; j < m; ++j) {
scanf("%d", &a[i][j]);
}
}
// TODO: calculate "maxval", "minval", and "avgval"
printf("%.2lf %.2lf %.2lf", (double) maxval, (double) minval, avgval);
return 0;
}
请注意,上述代码中还没有对最大值、最小值、平均值进行计算。这是您需要实现的部分。
对于本题,您需要熟悉C语言中二维数组的定义、初始化、输入输出、以及如何遍历数组元素等操作。同时,您还需要掌握如何进行for循环、函数调用、变量声明和计算等操作。在编写代码时,请您注意以下要点:
下面是一个具有实现参考价值的代码:
#include <stdio.h>
int main() {
int n, m, i, j, maxval, minval, sum;
double avgval;
scanf("%d%d", &n, &m);
int a[n][m];
for (i = 0; i < n; ++i) {
for (j = 0; j < m; ++j) {
scanf("%d", &a[i][j]);
}
}
maxval = a[0][0];
minval = a[0][0];
sum = 0;
for (i = 0; i < n; ++i) {
for (j = 0; j < m; ++j) {
if (a[i][j] > maxval) {
maxval = a[i][j];
}
if (a[i][j] < minval) {
minval = a[i][j];
}
sum += a[i][j];
}
}
avgval = (double) sum / (n * m);
printf("%.2lf %.2lf %.2lf", (double) maxval, (double) minval, avgval);
return 0;
}
在本代码中,我们首先依照题目描述的要求,完成了数组的声明、输入等操作。随后,我们使用两个for循环遍历数组每个元素,并分别求出最大值、最小值、和所有元素的和。最后,我们再使用求和的结果,除以数组的总大小即可得到数组元素的平均值。最后,将这三个值按照规定的精度,使用printf输出即可。