C语言问题,程序编译无错,运行出错

时间:2015.09.03 发布人:S**ura.CC

C语言问题,程序编译无错,运行出错

已解决问题

谷歌S**ura.CC用户在2015.09.03提交了关于“元气骑士C语言问题,程序编译无错,运行出错”的提问,欢迎大家涌跃发表自己的观点。目前共有2个回答,最后更新于2024-11-06T11:14:09。

#include<stdio.h>

#defineMAXN1000001

intmain()

{

inta[MAXN],n,i;

scanf("%d",&n);

a[1]=1;

a[2]=1;

if(n>2)

{

for(i=3;i<=n;i++)

{

a[i]=a[i-1]+a[i-2];

}

printf("%d",a[n]%10007);

}

else

printf("%d",a[n]%10007);

return0;

}


如果把inta[MAXN],n,i;,放在主函数之外成功运行是怎么回事

希望大家能够帮助她。

详细问题描述及疑问:

#include<stdio.h>

#defineMAXN1000001

intmain()

{

inta[MAXN],n,i;

scanf("%d",&n);

a[1]=1;

a[2]=1;

if(n>2)

{

for(i=3;i<=n;i++)

{

a[i]=a[i-1]+a[i-2];

}

printf("%d",a[n]%10007);

}

else

printf("%d",a[n]%10007);

return0;

}


如果把inta[MAXN],n,i;,放在主函数之外成功运行是怎么回事

期待您的答案,你无异于雪中送炭,让我感激涕零 !
希望以下的回答,能够帮助你。

第1个回答

用户名:w来自hoami1978  

你的栈溢出了,局部变量放在栈上的,你的a太大了

解决

1.把a[MAXN]放在main()外面(全局的),就可以

2.用动态数组,也没问题

第2个回答

用户名:玲儿我爱你  

确实是栈溢出了。你这种大**量的数组欢修用,建议使用malloc来分配。