c语言小白请教?

编译器用的是用的是dev,求的是二维数组【4】【6】的各行列之积以及总积,然后我就加多了一行和一列来运算结果。编译是能通过的。但是输入完35个数据之后exe就卡住了没有显... 编译器用的是用的是dev,求的是二维数组【4】【6】的各行列之积以及总积,然后我就加多了一行和一列来运算结果。编译是能通过的。但是输入完35个数据之后exe就卡住了没有显示。请教一下这个是为什么?
\\
#include<stdio.h>
int main()
{
int a[5][7],i,j;
for(i=0;i<5;i++)
for(j=0;j<7;j++)
scanf("%d",&a[i][j]);

for(j=0;j<7;j++)
for(i=0,a[5][j]=1;i<5;i++)
a[5][j]*=a[i][j];

for(i=0;i<5;i++)
for(j=0,a[i][7]=1;j<7;j++)
a[i][7]*=a[i][j];

for(i=0,a[5][7]=1;i<5;i++)
a[5][7]*=a[i][7];

for(i=0;i<6;i++){
for(j=0;j<8;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
展开
 我来答
百度网友e88eac6
2020-04-15 · TA获得超过2274个赞
知道小有建树答主
回答量:413
采纳率:73%
帮助的人:207万
展开全部
数组的使用超界问题导致的,程序定义的数组a[5][7],表示这个组有5行7列,但在使用数组时要注意数组的下标是从0开始计算的,即,5行的下标分别是0、1、2、3、4,7列的下标分别是0、1、2、3、4、5、6。所以并不存在a[5][j]、a[i][7]这样的数组元素。因为编译器在编译时不会去帮你检查数组的边界,只是检查编程的语法,所以编译并不会出问题。
GTA小鸡
高粉答主

2020-04-15 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
数组下标从0开始,因此数组a[5][7]的下标的合法范围是a[0][0]~a[4][6]。
a[5][x]、a[x][7]这些都是非法下标。
追问
懂了蟹蟹您
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式