English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base C

Contrôle de flux C

Fonctions du langage C

Tableaux en langage C

Pointeurs en langage C

Chaînes de caractères en langage C

Structure de C

Fichier C

Autres C

Manuel de référence C

Le programme C utilise des tableaux multidimensionnels pour multiplier deux matrices

Collection complète d'exemples de programmation C

Dans cet exemple, vous apprendrez à multiplier deux matrices et à afficher l'utilisation de fonctions définies par l'utilisateur.

Pour comprendre cet exemple, vous devriez comprendre ce qui suitProgrammation en CSujet :

Le programme nécessite que l'utilisateur entre la taille des deux matrices (lignes et colonnes).

Pour multiplier deux matrices,la nombre de colonnes de la première matrice doit être égal au nombre de lignes de la deuxième matrice

Le programme suivant nécessite le nombre de lignes et de colonnes des deux matrices, jusqu'à ce que les conditions ci-dessus soient satisfaites.

Ensuite, effectuez la multiplication de deux matrices, et le résultat est affiché à l'écran.

Pour cela, nous avons créé trois fonctions :

  • enterData() - Obtenir les éléments de la matrice de l'utilisateur.

  • multiplyMatrices()  - 将两个矩阵相乘。

  • display() - 在乘法后显示结果矩阵。

通过将矩阵传递给函数来相乘

#include <stdio.h>
void enterData(int first[10], int second[10], int r1, int c1, int r2, int c2);
void multiplyMatrices(int first[10], int second[10], int multResult[10], int r1, int c1, int r2, int c2);
void display(int mult[][10], int r1, int c2);
int main() {
    int first[10][10], second[10][10], mult[10][10], r1, c1, r2, c2;
    printf("输入第一个矩阵的行和列: ");
    scanf("%d %d", &r1, &c1);
    printf("输入第二个矩阵的行和列: ");
    scanf("%d %d", &r2, &c2);
    //进行输入直到第一个矩阵的列等于第二个矩阵的行
    while (c1 != r2) {
        printf("错误! 再次输入行和列。\n");
        printf("输入第一个矩阵的行和列: ");
        scanf("%d%d", &r1, &c1);
        printf("输入第二个矩阵的行和列: ");
        scanf("%d%d", &r2, &c2);
    }
    //取得矩阵数据的函数
    enterData(first, second, r1, c1, r2, c2);
    //用于将两个矩阵相乘的函数。
    multiplyMatrices(first, second, mult, r1, c1, r2, c2);
    //显示相乘后的合成矩阵的函数。
    display(mult, r1, c2);
    return 0;
}
void enterData(int first[10], int second[10], int r1, int c1, int r2, int c2) {
    printf("\n输入矩阵元素 1:\n");
    for (int i = 0; i < r1; ++i) {
        for (int j = 0; j < c1; ++j) {
            printf("Enter a%d%d: ", i + 1, j + 1);
            scanf("%d", &first[i][j]);
        }
    }
    printf("\n输入矩阵元素 2:\n");
    for (int i = 0; i < r2; ++i) {
        for (int j = 0; j < c2; ++j) {
            printf("Enter b%d%d: ", i + 1, j + 1);
            scanf("%d", &second[i][j]);
        }
    }
}
void multiplyMatrices(int first[10], int second[10], int mult[10], int r1, int c1, int r2, int c2) {
    // 矩阵的初始化元素多为0。
    for (int i = 0; i < r1; ++i) {
        for (int j = 0; j < c2; ++j) {
            mult[i][j] = 0;
        }
    }
    // 第一矩阵和第二矩阵相乘并存储在mult中。
    for (int i = 0; i < r1; ++i) {
        for (int j = 0; j < c2; ++j) {
            for (int k = 0; k < c1; ++k) {
                mult[i][j] += first[i][k] * second[k][j];
            }
        }
    }
}
void display(int mult[][10], int r1, int c2) {
    printf("\n输出矩阵:\n");
    for (int i = 0; i < r1; ++i) {
        for (int j = 0; j < c2; ++j) {
            printf("%d  ", mult[i][j]);
            if (j == c2 - 1)
                printf("\n");
        }
    }
}

Résultat de la sortie

Entrer les lignes et colonnes de la première matrice: 2
3
Entrer les lignes et colonnes de la deuxième matrice: 3
2
Entrer les éléments de la matrice 1:
Entrer a11: 3
Entrer a12: -2
Entrer a13: 5
Entrer a21: 3
Entrer a22: 0
Entrer a23: 4
Entrer les éléments de la matrice 2:
Entrer b11: 2
Entrer b12: 3
Entrer b21: -9
Entrer b22: 0
Entrer b31: 0
Entrer b32: 4
Sortie de la matrice:
24  29
6  25

Collection complète d'exemples de programmation C