【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法)

这篇具有很好参考价值的文章主要介绍了【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

六、批量数据组织——数组

6.1 成绩统计——数组类型

6.1.1 数组类型

6.1.2 数组声明与操作

6.1.3 成绩统计

6.2 统计多科成绩——多维数组

6.3 程序设计实例

6.3.1 杨辉三角形

6.3.2 矩阵乘积

6.3.3 消去法

6.4 线性表——分类与检索


前言

ChatGPT

        C语言是一种通用的、过程式的计算机编程语言,由贝尔实验室的Dennis Ritchie在20世纪70年代初开发。它被设计成一种简单、高效和可移植的语言,用于系统级编程和应用程序开发。

以下是C语言的一些主要特点:

1. 结构化编程:C语言支持结构化编程,它提供了顺序执行、条件语句(如if-else和switch)和循环结构(如for和while),使程序更易于阅读、理解和维护。

2. 中级语言:C语言同时具备高级语言和低级语言的特点。它提供了丰富的控制结构和操作符,可以直接访问内存和硬件,并且允许程序员进行底层的操作,如位操作和指针运算。

3. 可移植性:C语言编写的程序具有很高的可移植性,因为它的语法和特性在不同的计算机系统上基本保持一致。这使得程序可以在不同的平台上进行编译和执行,而无需对代码进行太多的修改。

4. 强大的标准库:C语言提供了一个丰富的标准库,其中包含了各种函数和工具,用于处理输入输出、字符串操作、内存管理、数学运算等。这些函数可以提高程序开发的效率,并且可以跨平台使用。

5. 面向系统编程:由于C语言具有直接访问内存和硬件的能力,它经常用于开发操作系统、嵌入式系统和驱动程序等底层软件。C语言还提供了位操作和指针等特性,使得程序员可以更好地控制系统资源。

6. 扩展性:C语言允许程序员编写自定义的函数和库,以扩展语言的功能。这使得C语言非常适合大型项目的开发,可以将代码组织成模块化的结构,并通过函数调用进行复用。

        尽管C语言相对较为底层,但它仍然是一种非常重要和广泛应用的编程语言。它为程序员提供了强大的控制能力和性能优势,并且在各种领域,如系统编程、嵌入式开发、游戏开发等方面都得到了广泛应用。许多现代编程语言,如C++、Java和Python,都受到了C语言的影响,并在其基础上进行了扩展和改进。

        C语言中的数组是一种用于存储多个相同类型元素的数据结构。它是一种线性数据结构,可以按照索引访问和操作其中的元素。数组在C语言中被广泛应用于各种编程任务,包括数据的组织、存储和处理。同时,数组也是其他数据结构和算法的基础,如字符串、栈、队列、排序算法等。

六、批量数据组织——数组

6.1 成绩统计——数组类型

6.1.1 数组类型

  • 数组是个数固定、类型相同的若干个变量的有序集合;
  • 数组中的变量称为数组元素;
  • 通常用数组来表示向量、矩阵等;
  • 举例:
    • int a[50],j[11] ;
    • 一个单词 由  若干个    字符   组成
      • char word[1000];
    • 一个向量 由  若干个    实数  组成
      • float data[4];
    • 一个矩阵 由  若干个    向量  组成
      • float vector[2][4];

6.1.2 数组声明与操作

        在C语言中,声明一个数组需要指定元素的类型和数组的名称,还可以指定数组的大小(即元素的数量)。以下是一个示例的数组声明:    

        【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法),C,c语言,算法,数据结构

        在上述示例中,我们声明了一个名为a的整型数组,它包含了5个元素。

        数组的元素可以通过索引访问,索引从0开始,依次增加。例如,要访问数组中的第一个元素,可以使用numbers[0];要访问第三个元素,可以使用numbers[2]。我们可以使用索引来读取、修改或赋值数组中的元素。  

        注意:数组的有效索引范围是从0到数组大小减1。如果尝试访问超出数组边界的索引,将导致未定义的行为或错误。

6.1.3 成绩统计

#include <stdio.h>

#define SIZE 5

int main() {
    int scores[SIZE]; // 存储成绩的数组
    int i;
    int sum = 0;
    float average;

    // 读取成绩
    printf("请输入%d个学生的成绩:\n", SIZE);
    for (i = 0; i < SIZE; i++) {
        printf("学生%d的成绩:", i + 1);
        scanf("%d", &scores[i]);
    }

    // 计算总分
    for (i = 0; i < SIZE; i++) {
        sum += scores[i];
    }

    // 计算平均成绩
    average = (float)sum / SIZE;

    // 打印结果
    printf("总成绩:%d\n", sum);
    printf("平均成绩:%.2f\n", average);

    return 0;
}

【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法),C,c语言,算法,数据结构

6.2 统计多科成绩——多维数组

       C语言的数组还支持多维数组的概念。多维数组是指包含多个维度的数组,可以用于表示表格、矩阵等复杂的数据结构。例如,以下是一个二维数组的声明和访问示例:

int matrix[3][3]; // 声明一个3x3的整型矩阵

// 访问矩阵中的元素
matrix[0][0] = 1; // 第一行第一列的元素
matrix[1][2] = 5; // 第二行第三列的元素

        在上述示例中,声明了一个名为matrix的二维整型数组,它是一个3x3的矩阵。通过使用两个索引,我们可以访问矩阵中的特定元素。

#include <stdio.h>

#define NUM_STUDENTS 5
#define NUM_SUBJECTS 3

int main() {
    int scores[NUM_STUDENTS][NUM_SUBJECTS]; // 存储成绩的二维数组
    int i, j;
    int sum[NUM_STUDENTS] = {0}; // 每个学生的总分
    float average[NUM_STUDENTS]; // 每个学生的平均成绩

    // 读取成绩
    printf("请输入%d个学生的%d门成绩:\n", NUM_STUDENTS, NUM_SUBJECTS);
    for (i = 0; i < NUM_STUDENTS; i++) {
        printf("学生%d的成绩:\n", i + 1);
        for (j = 0; j < NUM_SUBJECTS; j++) {
            printf("科目%d:", j + 1);
            scanf("%d", &scores[i][j]);
            sum[i] += scores[i][j];
        }
        average[i] = (float)sum[i] / NUM_SUBJECTS;
    }

    // 打印结果
    printf("\n学生成绩统计:\n");
    for (i = 0; i < NUM_STUDENTS; i++) {
        printf("学生%d的总成绩:%d\n", i + 1, sum[i]);
        printf("学生%d的平均成绩:%.2f\n\n", i + 1, average[i]);
    }

    return 0;
}
请输入5个学生的3门成绩:
学生1的成绩:
科目1:1
科目2:2
科目3:3
学生2的成绩:
科目1:4
科目2:5
科目3:6
学生3的成绩:
科目1:7
科目2:8
科目3:9
学生4的成绩:
科目1:9
科目2:8
科目3:7
学生5的成绩:
科目1:6
科目2:5
科目3:4

学生成绩统计:
学生1的总成绩:6
学生1的平均成绩:2.00

学生2的总成绩:15
学生2的平均成绩:5.00

学生3的总成绩:24
学生3的平均成绩:8.00

学生4的总成绩:24
学生4的平均成绩:8.00

学生5的总成绩:15
学生5的平均成绩:5.00

6.3 程序设计实例

6.3.1 杨辉三角形

        杨辉三角形是一个由数字排列成三角形的数列,它的每个数字等于它上方两个数字的和。以下是使用一维数组实现的杨辉三角形的打印代码示例:

#include <stdio.h>

#define MAX_ROWS 10

int main() {
    int triangle[MAX_ROWS][MAX_ROWS];
    
    // 初始化杨辉三角形的第一列和对角线为1
    for (int i = 0; i < MAX_ROWS; i++) {
        triangle[i][0] = 1;
        triangle[i][i] = 1;
    }
    
    // 计算并填充杨辉三角形的其他元素
    for (int i = 2; i < MAX_ROWS; i++) {
        for (int j = 1; j < i; j++) {
            triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
        }
    }
    
    // 打印杨辉三角形
    for (int i = 0; i < MAX_ROWS; i++) {
        for (int j = 0; j <= i; j++) {
            printf("%d ", triangle[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法),C,c语言,算法,数据结构

6.3.2 矩阵乘积

        矩阵乘积是指两个矩阵相乘得到的结果矩阵。

#include <stdio.h>


#define ROWS_A 2
#define COLS_A 3
#define ROWS_B 3
#define COLS_B 2

void matrixMultiply(int A[ROWS_A][COLS_A], int B[ROWS_B][COLS_B], int C[ROWS_A][COLS_B]) {
    for (int i = 0; i < ROWS_A; i++) {
        for (int j = 0; j < COLS_B; j++) {
            C[i][j] = 0;
            for (int k = 0; k < COLS_A; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
}

int main() {
    int matrixA[ROWS_A][COLS_A] = {{1, 2, 3}, {4, 5, 6}};
    int matrixB[ROWS_B][COLS_B] = {{7, 8}, {9, 10}, {11, 12}};
    int result[ROWS_A][COLS_B];

    matrixMultiply(matrixA, matrixB, result);

    printf("Result:\n");
    for (int i = 0; i < ROWS_A; i++) {
        for (int j = 0; j < COLS_B; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }

    return 0;
}

【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法),C,c语言,算法,数据结构

6.3.3 消去法

        消去法是一种解线性方程组的方法,通过行变换将方程组化为上三角形矩阵,然后回代求解未知数。

#include <stdio.h>

#define SIZE 3

void gaussianElimination(float matrix[SIZE][SIZE], float constants[SIZE], float solutions[SIZE]) {
    for (int k = 0; k < SIZE - 1; k++) {
        for (int i = k + 1; i < SIZE; i++) {
            float factor = matrix[i][k] / matrix[k][k];
            for (int j = k; j < SIZE; j++) {
                matrix[i][j] -= factor * matrix[k][j];
            }
            constants[i] -= factor * constants[k];
        }
    }
    
    for (int i = SIZE - 1; i >= 0; i--) {
        solutions[i] = constants[i];
        for (int j = i + 1; j < SIZE; j++) {
            solutions[i] -= matrix[i][j] * solutions[j];
        }
        solutions[i] /= matrix[i][i];
    }
}

int main() {
    float matrix[SIZE][SIZE] = {{2, -1, 1}, {-3, 2, -2}, {1, -1, 2}};
    float constants[SIZE] = {-2, 6, 5};
    float solutions[SIZE];
    
    gaussianElimination(matrix, constants, solutions);
    
    printf("Solutions:\n");
    for (int i = 0; i < SIZE; i++) {
        printf("x%d = %.2f\n", i+1, solutions[i]);
    }
    
    return 0;
}

【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法),C,c语言,算法,数据结构

6.4 线性表——分类与检索

【重拾C语言】六、批量数据组织(二)线性表——分类与检索(主元排序、冒泡排序、插入排序、顺序检索、对半检索)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/133620693?spm=1001.2014.3001.5501文章来源地址https://www.toymoban.com/news/detail-727535.html

到了这里,关于【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】数组的声明和使用(一维数组、多维数组、字符数组)

    C语言支持数组数据结构,是用来存储固定大小的相同类型元素的顺序集合,往往被认为是一系列相同类型的变量。 特点: 有序数据的集合。 数组内所有元素类型相同。 所有的数组都是由连续的内存位置组成,最低的地址对应第一个元素,最高的地址对应最后一个元素。 数

    2024年02月16日
    浏览(23)
  • Java语言创建包含以上数据类型的MySQL表,并提供批量新增数据、批量修改数据、删除数据以及字段的DDL语句的详细代码示例

    以下是使用Java语言创建包含以上数据类型的MySQL表,并提供批量新增数据、批量修改数据、删除数据以及字段的DDL语句的详细代码示例: 请注意,上述代码中的DB_URL、USER和PASS需要根据实际情况进行修改,以连接到正确的MySQL数据库。另外,需要确保已经导入了适当的JDBC驱动

    2024年02月15日
    浏览(61)
  • C语言自定义数据类型(二)使用结构体数组

    一个结构体变量中可以存放一组有关联的数据(如一个学生的学号、姓名、成绩等数据)。如果有 10 个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组的不同之处在于每个数组元素都是一个结构体类型的数据,它们都分别

    2024年01月19日
    浏览(31)
  • Rust变量、常量声明与基本数据类型

    Rust是一门系统级别的编程语言,注重安全性、性能和并发。在这篇博客中,我们将介绍Rust中的变量、常量声明以及基本数据类型,并通过示例说明每一种类型的用法。 在Rust中,使用 let 声明变量。变量默认是不可变的,要使其可变,需要使用 mut 。 常量使用

    2024年01月18日
    浏览(50)
  • 【Rust】001-基础语法:变量声明及数据类型

    “一切能用 Rust 重写的项目都将或者正在用 Rust 重写” Rust 入门与实践:https://juejin.cn/book/7269676791348854839?utm_source=course_list 代码演示 执行结果 依赖 Cargo.toxml 代码 执行命令 根目录执行 整型标量类型 只要记得最低从 8 开始,到 128 结束(当然,正常情况下我们最多用到 64,

    2024年02月10日
    浏览(38)
  • R语言的数据类型与数据结构:向量、列表、矩阵、数据框及操作方法

    R语言拥有丰富的数据类型和数据结构,以满足各类数据处理和分析的需求。本文将分享R语言中的数据类型,包括向量、列表、矩阵、数据框等,以及它们的特点、用途和操作方法。 向量是R语言中最基本的数据结构,它可以存储单个数据类型的元素序列。向量具有固定的长度

    2024年03月11日
    浏览(35)
  • Allegro批量替换过孔类型操作指导

    Allegro批量替换过孔类型操作指导 Allegro支持批量替换过孔类型,具体操作如下 例如需要把这些VIA10的过孔全部替换成VIA8的过孔 选择菜单上面的Tool-padstack-Group edit 右击选择temp Group 选中需要替换的过孔 选完之后右击选择complete 弹出Padstack Map窗口,modify Padstack 任意输入一个名字

    2024年02月09日
    浏览(30)
  • C语言通过ODBC函数操作Access数据库(mdb和accdb格式)(char字符数组)

    编译环境:Windows XP + Visual Studio 2010 数据库:Access 2010,accdb格式 本例程只使用char[]字符数组,不使用wchar_t[]字符数组,更适合C语言初学者。 如果读取字符串时,db_bind_str提供的字符数组空间小了,db_fetch会执行失败返回-2。 由于Windows系统设计原因,char[]字符数组只能存储G

    2024年02月02日
    浏览(44)
  • 【SystemVerilog 之数据类型】~ 数据类型、Logic 类型、数组(定宽数组、动态数组、队列、关联数组、链表)

    四值变量 :(0、1、x、z)四种状态 四值逻辑类型 :integer、logic、reg、net-type(如 wire、tri)、time(64bit的无符号整数); SV 并不太常用变量类型是 wire(assign 语句中)还是 reg(initial 和 always 语句中)。logic 用的比较多。可以被连续赋值语句驱动,可用在 assign、initial、always 语句

    2024年01月22日
    浏览(29)
  • 遍历所有控件,批量保存标签、批量操作编辑框,读取所有标签(易语言)

    这几天用易语言写一些工作上的数据显示小软件,因为软件上标签与编辑框较多,如果一 一去读取和保存的话,程序显得很冗长,并且扩展性不好,增加或删减1,2个控件,程序又得重新检查重写,而网上查了半天,关于易的批量操作控件,估计是太少人用吧,找不到。好吧

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包