这个C程序代码为什么会出现死循环?错在哪里?希望高手指点。

#include <stdio.h>
#define N 10
void main()
{
int i,j;
int a[N][N];
for(i=1;i<=N;i++)
{
a[i][i]=1;
a[i][1]=1;
}
for(i=3;i<=N;i++)
{
for(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
printf("杨辉三角形为:");
printf("\n");
printf("%d",a[i][j]);
}

第一个循环,i=N的时候数组越界了。数组范围只能是a[0][0]~a[9][9]。

至于死循环,只能说有可能编译器会生成死循环的代码(gcc环境下并不陷入死循环)。因为i,j的声明虽然在a[N][N]之前,但实际内存上可能位于a数组之后。因此在越界访问数组并赋值时,有可能将i或j重新赋值,导致循环无法跳出。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-31
初始化很重要。。所以最好 写成 int i=0,j=0; 你定义的数组大小为10 那么就是从0~9 计算机算法都是从0 开始这点跟以前不一样,要好好适应 如果你是要从第二位开始那么第一个循环改成
for(i=1;i<N;++i) 如果是第一位那么把i改成0 下面两个循环雷同 使用数组时要千万小心数组不能越界。。越界是个很容易犯的错误,但是它的危害很大。一定要杜绝
第2个回答  2011-10-30
没怎么细看 第一眼就有错误 两个循环都有问题
再去看下数组那一章 基本概念都没掌握
举个例子 定义一个数组 比如int a[10] 数组是有10个元素 但是用的时候是从a[0]~a[9] a[0]是数组的第一个元素 而不是a[1] 就是说循环可以写成for(i=0;i<10;i++)printf(“%d”,a[i]);
for(i=1;i<=N;i++) for(i=3;i<=N;i++)这个循环明显访问越界了本回答被提问者采纳

这个C程序代码为什么会出现死循环?错在哪里?希望高手指点。
至于死循环,只能说有可能编译器会生成死循环的代码(gcc环境下并不陷入死循环)。因为i,j的声明虽然在a[N][N]之前,但实际内存上可能位于a数组之后。因此在越界访问数组并赋值时,有可能将i或j重新赋值,导致循环无法跳出。

C语言中程序如:for( ; ;);为什么是死循环?
for( ; ;);的循环条件永远成立,所以导致死循环。

请教高手有关C语言死循环问题
答案有错误,第一个只要输入小于等于-3的奇数就不会死循环,第二个因为k>0总成立,所以是死循环

这个程序为什么输入数字就是正常的,但输入一个字符就会陷入死循环!望...
在scanf("%d",&cn);的后面加上fflush(stdin);来清空输入缓存。否则每次scanf都会失败的。你没有判断scanf的返回值,如果判断了你会发现scanf每次都返回0,这是失败的。因为类型不匹配。因为scanf返回0,因此cn的值是堆栈中的随机值,所以很难等于3.--- 谁说fflush不是C标准来的?它的实现的确根...

请编程高手看看我哪里编错了...一直死循环...谢啦~
while(num!=0) \/*因为循环体中没有涉及到num值的变动,num永远等于你输入的那个数值。所以只要上一步输不是0, 这个while循环永远不会停。{ printf("请输入该学生第%d个成绩,如结束输入请输入‘-1’\\n",n);scanf("%f",&sco);while(sco!=-1){ sum=sum+sco;ave=sum\/n;n++;printf(...

请教高手:为什么会出现死循环
double t=0; \/\/这一句拿到循环体外边就没事,放到里面就死循环 for(i=0;i==0||a[i-1]!=0;i++){ cout<<"请输入第"<<i+1<<"个电阻的阻值";cin>>a[i];} if(a[0]==0)break;for(j=0;j<i-1;j++){ t+=1.0\/a[j];} t=1.0\/t;cout<<"并联后的阻值为"<<t<<"Ω...

电脑程序、“死循环”是什么意思、高手进
在编程中,一个无法靠自身的控制终止的循环称为“死循环”。也就是说 无法自动停止的 一个程序 会导致计算机的崩溃 ^_^

C语言编程中按ctrl+F9后进入死循环,要怎么安全退出来,而且原程序不关闭...
C语言编程中按ctrl+F9后进入死循环,多半是程序判断的不偶量的值总是为真。你在每次写程序的时候要注意。出现这种情况的时候按ctrl+PauseBreak 再按一下ESC,再按一下F9,再按一下ESC.再进行程序的改进吧!~如果按ctrl+PauseBreak 也不能停止的话,就按PauseBreak键,再按ctrl+ESC退到windows窗口下...

会c的高手请进!帮我看看此程序为什么死循环?!菜鸟求指导。。
把if (p=90) p=47;改为if(p==90) p=47

c语言编程总无法运行,检查错误说main有问题
程序算法有问题,会出现死循环(用f10单步执行看看你就知道了),自己再检查一下吧 这类问题用链表来做很简单的,下面我用的是双向循环链表来实现的,可以参考一下 include "stdio.h"include "stdlib.h"include "malloc.h"define NULL 0 struct List { int data;char name[15];struct List *next...

相似回答