c语言基础之二维数组

声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。

      二维数组是一种数据结构,它可以被看作是一个由行和列组成的表格。从概念上讲,可以将二维数组想象成一个有行有列的矩阵。比如一个 int arr[3][4] 这样的二维数组,就好像是一个 3 行 4 列的表格,总共能存放 12 个整数。在内存中,二维数组的存储是线性的,也就是说,虽然我们在逻辑上把它看作是行和列的组合,但实际上内存是依次连续存储这些元素的。先存储第一行的所有元素,然后再存储第二行,以此类推。在使用二维数组时,我们通常通过两个索引来访问其中的元素。第一个索引表示行,第二个索引表示列。例如,arr[1][2] 表示访问第二行第三列的元素。

在编程中,二维数组常用于以下场景:

  1. 表示图像数据:图像可以看作是由像素组成的矩阵,每个像素有其颜色值。
  2. 存储矩阵运算的数据:如线性代数中的矩阵相加、相乘等操作。
  3. 处理表格形式的数据:比如学生成绩表、库存清单等。

以下是用c语言解决二维数组的一个例题代码以及运行结果

例题:假设本学期学习5门课程,定义一个二维数组用来存储本班所有学生(假设有5人)的这5门课程的成绩。求每名学生5门课程的总成绩,并降序排序,输出对应的学号和总成绩,以此作为奖学金的评定依据。

#include

#include

// 比较函数,用于排序

int compare(const void *a, const void *b) {

    int *pa = (int *)a;

    int *pb = (int *)b;

    return *pb - *pa;

}

int main() {

    int grades[5][5] = {

        {85, 90, 78, 88, 92},

        {75, 80, 85, 90, 70},

        {90, 88, 92, 86, 95},

        {80, 75, 82, 78, 85},

        {70, 65, 75, 68, 72}

    };

    int totalGrades[5];

    int studentIds[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++) {

        int sum = 0;

        for (int j = 0; j < 5; j++) {

            sum += grades[i][j];

        }

        totalGrades[i] = sum;

    }

    // 对总成绩进行排序

    qsort(totalGrades, 5, sizeof(int), compare);

    printf("学号\t总成绩\n");

    for (int i = 0; i < 5; i++) {

        printf("%d\t%d\n", studentIds[i], totalGrades[i]);

    }

    return 0;

}

c语言基础之二维数组_第1张图片

你可能感兴趣的:(c语言,二维数组)