您的位置:首页 > 编程语言 > C语言/C++

C/C++ 实现矩阵相乘(二)

2014-04-01 13:00 183 查看
说明:

1、C/C++实现矩阵相乘(一)从文件中读取矩阵,相乘并得到结果。下面的代码同样实现矩阵相乘,不过完全在控 制台进行,比较简单

2、编译工具:Visual Studio Professional 2013

#include<stdio.h>
#include<stdlib.h>
int main(){
int ROW1 = 0, COL1 = 0, ROW2 = 0, COL2 = 0, NUM = 0, RESNUM = 0;
printf("输入矩阵 1 的行数\n");
scanf_s("%d", &ROW1);
printf("输入矩阵 1 的列数\n");
scanf_s("%d", &COL1);
int *p1 = (int *)malloc(ROW1*COL1*sizeof(int));
printf("依次输入矩阵各行数字,以回车隔开:\n");
for (int i = 0; i < ROW1*COL1; i++){
scanf_s("%d", p1 + i);
}
printf("输入矩阵 2 的行数\n");
scanf_s("%d", &ROW2);
printf("输入矩阵 2 的列数\n");
scanf_s("%d", &COL2);
int *p2 = (int *)malloc(ROW2*COL2*sizeof(int));
printf("依次输入矩阵各行数字,以回车隔开:\n");
for (int i = 0; i < ROW2*COL2; i++){
scanf_s("%d", p2 + i);
}
if (COL1 != ROW2){
printf("矩阵不匹配,不能相乘");
return 0;
}
int *result = (int *)malloc(ROW1*COL2*sizeof(int));
for (int rowone = 0; rowone < ROW1; rowone++)
for (int coltwo = 0; coltwo <COL2; coltwo++){
for (int colone = 0, rowtwo = 0; colone < COL1, rowtwo <COL1; colone++, rowtwo++){
NUM += p1[rowone*COL1 + colone] * p2[coltwo + rowtwo*COL2];
}
result[RESNUM] = NUM;
NUM = 0;
RESNUM++;
}
printf("\n结果是:\n");
for (int i = 0; i < ROW1*COL2; i++){
printf("%d ", result[i]);
if ((i + 1) % COL2 == 0) printf("\n");
}
free(p1);
free(p2);
free(result);
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 矩阵 malloc