C语言求n阶矩阵主对角线之和,程序哪里错了?

最初代码删掉了-----------------修改后的:#include <stdio.h>#define N 20int main(){int n,i,j;int sum=0;//定义二位数组int a[N][N];printf("n=?");scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){a[i][j]=rand()%20;if(i==j)//计算主对角线之和sum+=a[i][i];}}//输出数组printf("矩阵:\n");for(i=0;i<=n;i++){for (j=0;j<=n;j++){printf("%5d",a[i][j]);}printf("\n");}printf("Sum=%d\n",sum);return 0;}

第1个回答  2019-11-11
其实代码的前半部分是没有问题的,后面有一个小问题,在于最后输出矩阵的时候,
for循环
的条件有误,题主写的是:i<=n和j<=n,但是应该分别是i<n和j<n。
第2个回答  2019-11-17
就你说的scanf("%d,&n),然后数组的定义int
a[20][20]={0};要写在printf前面。
然后,你是要随机生成数组吗,上面已经可以编译了,但生成的数组是固定的,如果要用随机数,前面还要加一句srand((unsigned)time(NULL));
以及#include
<stdlib.h>和#include
<time.h>
相似回答