C语言程序运行后 出现exe停止工作 为什么呢?

#include<stdio.h>main(){inta[6][6];inti,k;for(i=0;i<7;i++)a[i][0]=1;for(i=1;i<7;i++)f... #include<stdio.h>
main()
{
int a[6][6];
int i,k;
for(i=0;i<7;i++)
a[i][0]=1;
for(i=1;i<7;i++)
for(k=1;k<7;k++)
a[i][k]=1;
for(i=2;i<7;i++)
for(k=1;k<=i-1;k++)
a[i][k]=a[i-1][k]+a[i-1][k-1];

for(i=0;i<7;i++)
{
for(k=0;k<=i;k++)
printf("%d ",a[i][k]);
printf("\n");
}
}

把a[6][6]改成a[10][10]就好了这是为什么呢?
展开
 我来答
阿天美食达人
推荐于2019-10-30 · TA获得超过7899个赞
知道答主
回答量:35
采纳率:100%
帮助的人:9945
展开全部

C语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。

第一种:内存溢出

内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件。

第二种:编译器错误

部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能导致程序出现不限于崩溃退出的异常错误,通常解决方法是到编译器官方网站下载最新版的IDE安装。

举例说明:

1、除以零。

2、数组越界:int a[3]; a[10000000]=10。

3、指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10。

4、使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10。

5、数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000],没有开辟内存 List L=(List)malloc(sizeof(struct LNode))。runtime  error (运行时错误)就是程序运行到一半,程序就崩溃了。

扩展资料:

C特有特点:

1、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

2、C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。

3、不同的变量类型可以用结构体(struct)组合在一起。

4、只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。

5、部份的变量类型可以转换,例如整型和字符型变量。

6、通过指针(pointer),C语言可以容易的对存储器进行低级控制。

7、预编译处理(preprocessor)让C语言的编译更具有弹性。

参考资料:C语言-百度百科

tattackor
推荐于2017-10-08 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:893万
展开全部

这种情况叫做 runtime error (运行时错误)。


在 Windows 7 上这样提示:

在 Windows XP 上这样提示:

runtime  error (运行时错误)就是程序运行到一半,程序就崩溃了。

比如说:

①除以零

②数组越界:int a[3]; a[10000000]=10;

③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;

④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;

⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000]

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
電泡泡
2013-06-14 · TA获得超过154个赞
知道答主
回答量:74
采纳率:0%
帮助的人:73.4万
展开全部

a[6][6]下标是a[0~5][0~5]

你的下面这段代码

for(i=2;i<7;i++)
for(k=1;k<=i-1;k++)
a[i][k]=a[i-1][k]+a[i-1][k-1];

循环已经越界了,计算机找不到指定的区域,自然会跳出程序,计算机编程边界问题还是要尤其注意的

有疑问请直接百度hi我,或直接email heihei36@qq.com

还是我先回答你问题的 还望采纳呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郝在益
2013-06-14 · TA获得超过2079个赞
知道小有建树答主
回答量:1496
采纳率:54%
帮助的人:632万
展开全部
a[6][6]是从a[0][0]到a[5][5]的。

for(i=0;i<7;i++)
a[i][0]=1;
这里你的i可以等于6,超过了范围,所以就不行咯。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式