📜  C测验– 106 |问题3(1)

📅  最后修改于: 2023-12-03 15:00:12.592000             🧑  作者: Mango

C测验– 106 | 问题3

本评测考查C语言的数组概念和使用方法。下面是本题的具体描述和要求:

描述

给定任意两个正整数N和M,编写一个C语言程序,实现以下功能:

  1. 声明一个N×M的二维数组a(注意:数组元素的类型为整数类型)
  2. 循环输入a数组中的元素值
  3. 找出数组a中的最大值maxval,最小值minval,以及所有元素的平均值avgval
  4. 输出maxval,minval和avgval的值,结果保留小数点后两位
要求

请您提交一份能够顺利实现上述功能的C程序代码。您需要保证:

  1. 您编写的代码可以被编译器正确编译和执行
  2. 程序中不得使用C语言中的STL或其他扩展库函数,需要手动实现相关功能
  3. 程序的输入和输出格式必须按照题目描述中的要求进行
示例

下面是一个可以对本题进行参考的,简短但不完整的代码,供您理解题目描述和整理思路:

#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循环、函数调用、变量声明和计算等操作。在编写代码时,请您注意以下要点:

  1. 变量命名:请您用有含义的、简短明了的变量名来命名您的变量。避免使用过于晦涩、难以理解的缩写或汉语拼音等文字。
  2. 编写清晰、可读性强的代码:请尽量避免过多的嵌套、使用复杂的语句结构、或写出混乱的代码风格。确保代码布局清晰、对齐正确、缩进明确,可读性良好。
  3. 编写最小化、高效率的代码:请您尽量精简代码,避免重复或无用的计算工作,确保代码尽可能的高效。同时,不要在不必要的情况下使用过多的变量。

下面是一个具有实现参考价值的代码:

#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输出即可。