一个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);
这是一个 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);