当前位置: 首页 > news >正文

c语言基础之二维数组

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

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

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

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

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

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

#include <stdio.h>

#include <stdlib.h>

// 比较函数,用于排序

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;

}


http://www.mrgr.cn/news/78968.html

相关文章:

  • wireshark基础
  • 我的知识图谱和Neo4j数据库的使用
  • Nginx Web服务器管理、均衡负载、访问控制与跨域问题
  • AlmaLinux8.10安装samba实现与Windows文件共享
  • FreeSWITCH mod_conference 的按键会控
  • OpenEuler 欧拉系统安装教程(详细)
  • OD B卷 - 实现 【BOSS的收入】
  • 吉林大学23级数据结构上机实验(第7周)
  • 使用 CFD 仿真进行阀门性能分析:第 II 部分
  • Java 基础面试题
  • Spring入园须知
  • 计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • cf EC 172 C(0->-1 的转化+区间和使用前缀和表示,化简式子)+ D(二维的信息,先对一维排序,另一维看情况分析)
  • C语言:指针与数组
  • playwright 学习复仇记-2 Selector选择器定位元素
  • LearnOpenGL学习(光照 -- 投光物,多光源)
  • Java OOP
  • Spring 中的 @Component 注解
  • golang的wails框架在macos下的问题
  • NViST运行笔记
  • HHO-CNN-BiGRU-Attention哈里斯鹰优化算法卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比
  • 多模态(Multimodal)通常指的是系统或过程能够处理、整合和理解来自两个或多个不同模式(modality)的信息。
  • C语言——自我介绍_Gitee的基本使用
  • linux(centos) 环境部署,安装JDK,docker(mysql, redis,nginx,minio,nacos)
  • 开发系统准备与开发环境配置总结
  • 计算机网络复习1——导言和概论