数组矩阵相乘
题目: n维矩阵乘法:A B-1功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,
输出ab-1结果。
分步实施:
1) 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2) 完成最低要求:建立一个文件,可完成2维矩阵的情况;
3) 一步要求:通过键盘输入维数n。有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
数据结构老师留的作业,我用c语言写了代码,不用函数的话就可以正确运行,但是我排成函数格式后出现很多错误,但是不明白系统说的错误是什么意思。
希望大家帮我看看
#include<stdio.h>
#define X 2
#define Y 3
#define Z 4
int main()
{
void Matrix(int a[][],int m,int n);
void MatrixC(int a[][],int b[][],int c[][],int m,int n);
void print(int a[][],int m,int n); //3个函数声明
FILE *fp;
fp=fopen("matrix.txt","w"); //文件写入
int a[X][Y];
int b[Y][Z];
int c[X][Z];
int i,j;
Matrix(a,X,Y);//矩阵a输入
Matrix(b,Y,Z);//矩阵b输入
MatrixC(a,b,c,X,Z);//调用函数,矩阵相乘实现
fprintf(fp,"*** Matrix A ***\n");
print(a,X,Y);//调用函数,矩阵输出
fprintf(fp,"*** Matrix B ***\n");
print(b,Y,Z);
fprintf(fp,"*** Matrix C ***\n");
print(c,X,Z);
getch();
fclose(fp);
return 0;
}
void Matrix(int a[][],int m,int n)//矩阵输入
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
void MatrixC(int a[][],int b[][],int c[][],int m,int n)//矩阵相乘实现
{
int i,j,k;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
}
void print(int a[][],int m,int n)//矩阵屏幕输出
{
FILE *fp;
int i,j;
for(i=0;i<m;++i)
{
for(j=0;j<n;j++)
fprintf(fp,"%d\t",a[i][j]);
fprintf(fp,"\n");
}
}