感谢大家的帮忙,我回去思考过后还有点小错误无法理解,请再次指正
#include<stdio.h>#define n 4
void value1(int a[n][n]); /*矩阵a的输入*/
void value2(int b[n][n]);/*矩阵b的输入*/
void mult(int a[][n],int b[][n],int c[][n]);/*矩阵求积操作*/
void madd(int a[n][n],int b[n][n],int c[n][n]);/*矩阵求和操作*/
void disp(int c[n][n]);/*矩阵输出*/
void main()
{
int a[n][n],b[n][n],c[n][n];
printf("输入矩阵a为:\n");
value1(a);
printf("输入矩阵b为:\n");
value2(b);
printf("矩阵求积后为:\n");
mult(a,b,c);
printf("矩阵求和后为:\n");
madd(a,b,c);
printf("输出矩阵为:\n");
disp(c);
}
void value1(int a[n][n]) /*矩阵a的输入*/
{
int i,k;
printf("please input a[i][k]=\n");
for(i=0;i<n;i++)
{
for(k=0;k<n;k++)
{
printf("a[%d][%d]=",i,k,a[i][k]);
scanf("%d",&a[i][k]);
}
}
}
void value2(int b[n][n])/*矩阵b的输入*/
{
int k,j;
printf("please input b[k][j]=\n");
for(k=0;k<n;k++)
{
for(j=0;j<n;j++)
{
printf("b[%d][%d]=",k,j,b[k][j]);
scanf("%d",&b[k][j]);
}
}
}
void mult(int a[n][n],int b[n][n],int c[n][n])/*矩阵求积操作*/
{
int i,j,s,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
s=0;
for(k=0;k<n;k++)
c[i][j]=s;
s+=value1(a)*value2(b);
}
}
void madd(int a[n][n],int b[n][n],int c[n][n])/*矩阵求和操作*/
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
c[i][j]=value1(a)+value2(b);
}
}
void disp(int c[n][n])/*矩阵输出*/
{
int i,j;
printf("矩阵相乘后的结果为:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("c[%d][%d]=%d ",i,j,c[i][j]);
printf("\n");
}
}
}