C语言求助,大神们帮我看看这个程序那里出了问题,编译没有错误,两个警告,但是结果总是没有输出

题目是输出一个N*N矩阵的左下角
#include <stdio.h>
#include <stdlib.h>
int function(int N,int a[N][N]);
int main()
{
int N;
scanf("%d",&N);
int a[N][N];
int i,j;
for(i=0;i<=N;i++)
for(j=0;j<=N;j++)
scanf("%d",&a[i][j]);
function(a,N);
return 0;
}
int function(int N,int a[N][N])
{
int i,j;
for(i=0;i<=N;i++)
{
for(j=0;j<=i;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
return 0;
}

我说你的思路还不清晰,编程需要很清晰的思路。
首先,function(a,N)和int function(int N,int a[N][N])参数不一致,这也是报错的原因。因该是function(N,a),这也是运行错误的原因(Segmentation fault (core dumped))。

其次:for(i=0;i<=N;i++) for(j=0;j<=N;j++)scanf("%d",&a[i][j]);,这里有个错误,定义数组a[N][N],如果N=3;那么a的末尾单元是a[2][2]而不是a[3][3]因为数组是从a[0][0]开始,所以应该是for(i=0;i<N;i++) for(j=0;j<N;j++)scanf("%d",&a[i][j]);在function中取值也一样

最后for(j=0;j<=i;j++)不知道你确定是要这样还是for(j=0;j<N;j++)。
温馨提示:答案为网友推荐,仅供参考
相似回答