【重拾C语言】六、批量数据组织——数组

目录

前言

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

6.1 成绩统计——数组类型

6.1.1 数组类型

6.1.2 数组声明与操作

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

6.3 程序设计实例

6.3.1 杨辉三角形

6.3.2 矩阵乘积

6.3.3 消去法


前言

        C语言中的数组是一种用于存储多个相同类型元素的数据结构。它是一种线性数据结构,可以按照索引访问和操作其中的元素。数组在C语言中被广泛应用于各种编程任务,包括数据的组织、存储和处理。

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

int numbers[5]; // 声明一个包含5个整型元素的数组

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

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

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

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

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

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

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

        数组在C语言中具有广泛的应用,它们可以用于存储和处理大量的数据,进行排序、搜索、统计等操作。同时,数组也是其他数据结构和算法的基础,如字符串、栈、队列、排序算法等。掌握数组的使用对于进行C语言编程是至关重要的。

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

待完善

6.1 成绩统计——数组类型

      

6.1.1 数组类型

6.1.2 数组声明与操作

        

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

        

6.3 程序设计实例

6.3.1 杨辉三角形

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

#include 

#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;
}

6.3.2 矩阵乘积

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

#include 

#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```c
#include 

#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;
}

6.3.3 消去法

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

#include 

#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语言,算法,数据结构)