刚刚写了个可以计算矩阵乘法的小程序,主要是方便我GF做作业.
如果有需要的也可以拿去用看看.
#include "stdio.h"
#define ROW 100
#define COL 100
int main(void){
char ch;
int arry1[ROW][COL]={{0}};
int arry2[ROW][COL]={{0}};
int arry3[ROW][COL]={{0}};
int r1,r2,c1,c2,k=0,i,j;
while(1){
printf("输入矩阵1的行列数\n");
printf("Rows=");
scanf("%d",&r1);
printf("Cols=");
scanf("%d",&c1);
printf("输入矩阵2的行列数\n");
printf("Rows=");
scanf("%d",&r2);
printf("Cols=");
scanf("%d",&c2);
if(c1!=r2){
printf("\n注意:矩阵1的列数与矩阵2的行数不相等不能进行乘运算!\n\n");
continue;
}
else
break;
}
while(1){
printf("\n输入元素矩阵1:\n");
for(i=0;i<r1;i++)
for(j=0;j<c1;j++)
scanf("%d",&arry1[i][j]);
fflush(stdin);
printf("矩阵1是/否为:\n");
for(i=0;i<r1;i++){
for(j=0;j<c1;j++)
printf("%2d ",arry1[i][j]);
putchar('\n');
}
printf("\ny/n?");
if((ch=getchar())=='y'||ch=='Y'){
fflush(stdin);
break;
}
else{
fflush(stdin);
continue;
}
}
while(1){
printf("\n输入元素矩阵2:\n");
for(i=0;i<r2;i++)
for(j=0;j<c2;j++)
scanf("%d",&arry2[i][j]);
fflush(stdin);
printf("矩阵2是/否为:\n");
for(i=0;i<r2;i++){
for(j=0;j<c2;j++)
printf("%2d ",arry2[i][j]);
putchar('\n');
}
printf("\ny/n?");
if((ch=getchar())=='y'||ch=='Y'){
fflush(stdin);
break;
}
else{
fflush(stdin);
continue;
}
}
for(j=0;j<c2;){
for(i=0;i<r1;){
while(k<c1){
arry3[i][j]+=arry1[i][k]*arry2[k][j];
k++;
if(k==c1){
i++;
k=0;
break;
}
}
if(i==r1){
j++;
break;
}
}
}
printf("\n矩阵1乘以矩阵2为:\n");
for(i=0;i<r1;i++){
for(j=0;j<c2;j++)
printf("%2d ",arry3[i][j]);
putchar('\n');
}
return 0;
}