一个C++程序,输入两个3*3的矩阵,并显示矩阵的和与乘积

A C++ program that inputs two 3*3 matrice and display the sum and product of the matrices

这是一个 c++ 程序,它接受 3*3 矩阵的输入并显示这些矩阵的总和和乘积。现在我已经改进了程序并且它按预期工作,那么这个程序还有什么可以改进的吗?

#include <stdio.h>

//function prototypes

获取数组的输入。

void getarr(int *x);

将两个矩阵相加。


void addm(int *x, int *y, int *z);

打印数组。

void displaym(int *x);

将两个数组相乘。

void multm(int *x, int *y, int *z);

主要功能

int main() {

    //declaring arrays for matrices
    int a[3][3];
    int b[3][3];
    int c[3][3];
    int d[3][3];

    //getting input from user
    printf("\nEnter nine numbers as the values for first matrix:\n");
    getarr(a[0]);
    printf("\nThe matrix you entered is:\n");
    displaym(a[0]);
    printf("\nEnter nine numbers as the values for second matrix:\n");
    getarr(b[0]);
    printf("\nThe matrix you entered is:\n");
    displaym(b[0]);
    
    //calling function for addition
    addm(a[0], b[0], c[0]);

    //calling function for multiplication
    multm(a[0], b[0], d[0]);

    //printing the matrices
    printf("\nThe sum of the matrices is:\n");
    displaym(c[0]);
    printf("\nThe product of the matrices is:\n");
    displaym(d[0]);

    return 0;
}

函数定义

void getarr(int *x) {
    for (int j = 0; j < 9; j++) {
        printf("%d:", j);
        scanf("%d", x);
        x++;
    }
}

void addm(int *x, int *y, int *z) {
    for (int i = 0; i < 9; i++) {
        *z = *x + *y;
        z++;
        x++;
        y++;
    }
}

void multm(int *x, int *y, int *z) {
    for(int j=0;j<3;j++){
    for (int i = 0; i < 3; i++, z++) {
        *z = (*x++)*(*y)+(*x++)**(y + 3)+(*x)**(y + 6);
        x -= 2, y += 1;
    }
    x += 3, y -= 3;
    }
}

void displaym(int *x) {
    printf("\n\n");
    for (int i = 0; i < 9; i++) {
        printf("%d  ", *x++);
        if (i == 2 || i == 5)
            printf("\n");
    }
}

这是未初始化指针的常见错误。你在程序的前面声明了 int * d; 但你从来没有给它一个 d 应该指向的内存。你需要初始化那个内存。

您可以在 main 中添加以下行,但在使用 d

之前
d = new int[9];
memset(d, 0, 9);