c语言计算两个n(1=<n<=6)阶矩阵的和与差,并输出。

输入:2n+1行,第一行输入一个数n;接下来的2n行用来输入两个n阶矩阵。
输出:2n行,前n行为两个个矩阵的和,后n行为第一个矩阵减去第二个矩阵的差。
看下我的代码为啥不对
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n=0;
scanf("%d",&n);
int i,j;
int a[n][n],b[n][n],c[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);

for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);

for(i=0;i<n;i++){
for(j=0;j<n;j++)
c[i][j]=a[i][j]+b[i][j];
}
for(i=0;i<n;i++){
printf("%d",c[i][0]);
for(j=0;j<n;j++)
printf(" %d",c[i][j]);
printf("\n");
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
c[i][j]=a[i][j]-b[i][j];
}
for(i=0;i<n;i++){
printf("%d",c[i][0]);
for(j=0;j<n;j++)
printf(" %d",c[i][j]);
printf("\n");
}
return 0;

}

第1个回答  2018-06-01
两个错误,共3处:

1、C语言中,数组任意维的边界不能是变量。因此a[n][n],b[n][n],c[n][n]是错误的。
修改方法:将n改为6,即:int a[6][6],b[6][6],c[6][6];
2、输出时,既然每行的第一个元素输出了,那么j就不能再从0开始了,共有两处这样的错误。
for(j=0;j<n;j++)
printf(" %d",c[i][j]);
改为
for(j=1;j<n;j++)//将j=0改为j=1
printf(" %d",c[i][j]);本回答被网友采纳
相似回答