输入两个对称矩阵,求两矩阵的和与积。。大牛们帮帮我,有错不会改,调试了一阵子了诶。。

来源:互联网 发布:cst2014仿真软件下载 编辑:程序博客网 时间:2024/06/05 06:59

代码如下:

#include<stdio.h>#define N 4#define M (N+1)*N/2void 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));}


0 0