各位大侠帮忙看看这个程序为何能运行也能出正确结果 就是提示debug error
答案:6 悬赏:60
解决时间 2021-02-10 19:56
- 提问者网友:相思瘸子
- 2021-02-10 12:12
各位大侠帮忙看看这个程序为何能运行也能出正确结果 就是提示debug error
最佳答案
- 二级知识专家网友:有钳、任性
- 2021-02-10 13:39
数组下标越界
n=50
for (i=2;i<=n;i++) // i == 50,n==50
for (j=0;j<=i+50;j++) // max j == 100;
最后一个循环a[j] == a[100];
#define N 100
a[N]={1}
数组a[N]下标是0 ~ 99 ;
很明显的数组下标越界,推荐详细阅读指针和数组。
n=50
for (i=2;i<=n;i++) // i == 50,n==50
for (j=0;j<=i+50;j++) // max j == 100;
最后一个循环a[j] == a[100];
#define N 100
a[N]={1}
数组a[N]下标是0 ~ 99 ;
很明显的数组下标越界,推荐详细阅读指针和数组。
全部回答
- 1楼网友:零负荷的放任
- 2021-02-10 17:42
开头改成 #include <studio.h>即可
- 2楼网友:一身浪痞味
- 2021-02-10 16:25
错误信息的意思是"函数调用过程中堆栈指针的值未被正确储存",大概是你函数中的运算嵌套太多了。。
- 3楼网友:24K纯糖
- 2021-02-10 15:26
你这代码有问题,主函数里也能声明其他函数吗?
- 4楼网友:为你轻狂半世殇
- 2021-02-10 14:43
#define N 100
int a[N]={1};//100的数组
n=50;
for (j=0;j<=i+50;j++)//50+100=150
a[j] <=> a[150]
知道怎么回事了吧
- 5楼网友:统治我的世界
- 2021-02-10 14:03
=================================
for (j=0;j<=i+50;j++)
{
m=a[j]*i+b;
a[j]=m%10;
b=m/10;
}
====================================
数组越界了,
n=50;
cal(n);
for (i=2;i<=n;i++)
i会等于50
for (j=0;j<=i+50;j++)
故j会有机会等于100
a[100]=m%10;越界了,造成栈损坏
由于函数返回地址放在栈上,虽然函数cal能跑完,返回时找不到返回的地址了
故报错
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |