输入两个对称矩阵,求两矩阵的和与积。。大牛们帮帮我,有错不会改,调试了一阵子了诶。。
#include<stdio.h>#define N 4
#define M (N+1)*N/2
void print(int c[N][N])
{
int i,j;
for(i = 0;i<N;i++)
for(j = 0;j<N;j++)
scanf("%d",&c[i][j]);
}
int * save(int a[N][N] )
{
int i,j,k;
int d[M];
for(i = 0;i<N;i++)
for(j = 0;j<N;j++)
{
for(k = 0;k<M;k++)
{
if(i>=j)
d[k] = a[i][j];
}
return d;
}
}
int * add(int a[N][N],int b[N][N])
{
int i;
int *p,*q;
p = save(a);
q = save(b);
int k[M];
for(i = 0;i<M;i++)
k[i] = (*(p+i))+(*(q+i));
return k;
}
int * muti(int a[N][N],int b[N][N])
{
int i,J[M];
int *p,*q;
p = save(a);
q = save(b);
for(i = 0;i<M;i++)
J[i] = (*(p+i))*(*(q+i));
return J;
}
void show(int *p)
{
int a[M];
int i,j,f;
for(i = 0;i<N;i++)
{
for(j = 0;j<N;j++)
if(i>=j)
for(f = 0;f<M;f++)
{
a[i][j] = *(p+f);
a[j][i] = *(p+f);
}
}
for(i = 0;i<N;i++)
for(j = 0;j<N;j++)
printf("%d",a[i][j]);
}
void main()
{
int a[N][N],b[N][N],*p,*q,i,j;
p = a;
q = b;
printf("请输入矩阵a:\n");
print(a);
printf("a矩阵如下:\n");
for(i = 0;i<N;i++)
for(j = 0;j<N;j++)
printf("%d",a[i][j]);
printf("\n");
printf("请输入矩阵b:\n");
for(i = 0;i<N;i++)
for(j = 0;j<N;j++)
printf("%d",b[i][j]);
pintf("\n");
printf("b矩阵如下:\n");
show(b);
printf("a,b矩阵和:\n");
show(add(a,b));
printf("a,b矩阵积:\n");
show(muti(a,b));
}