#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 4 // 矩阵阶数

void printMatrix(int matrix[N][N]) { // 打印矩阵
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

int rank(int matrix[N][N]) { // 计算矩阵的秩
    int i, j, k, r = 0;
    for (i = 0; i < N; i++) { // i表示列
        for (j = r; j < N; j++) { // j表示行
            if (matrix[j][i] != 0) { // 找到一个非零元素
                if (j != r) { // 如果不在第r行,则交换行
                    for (k = i; k < N; k++) {
                        int temp = matrix[j][k];
                        matrix[j][k] = matrix[r][k];
                        matrix[r][k] = temp;
                    }
                }
                break;
            }
        }
        if (j == N) // 如果第i列全是0,则跳过
            continue;
        for (j = r+1; j < N; j++) { // 将第i列下面的元素消为0
            if (matrix[j][i] != 0) {
                int m = matrix[j][i], n = matrix[r][i];
                for (k = i; k < N; k++) {
                    matrix[j][k] = matrix[j][k] * n - matrix[r][k] * m;
                }
            }
        }
        r++;
    }
    return r;
}

int main() {
    int matrix[N][N];
    srand(time(NULL)); // 设置随机数种子
    for (int i = 0; i < N; i++) { // 随机生成矩阵
        for (int j = 0; j < N; j++) {
            matrix[i][j] = rand() % 10;
        }
    }
    printf("矩阵为:\n");
    printMatrix(matrix);
    printf("秩为:%d\n", rank(matrix));
    return 0;
}
``
用C语言写一个随机生成任一矩阵求其秩用高斯消元法至少4阶

原文地址: https://www.cveoy.top/t/topic/fJzJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录