| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 957 人关注过本帖
标题:大伙儿帮我看看这道程序有什么问题?
只看楼主 加入收藏
小陈陈
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-8-12
结帖率:85.71%
收藏
 问题点数:0 回复次数:10 
大伙儿帮我看看这道程序有什么问题?
#include <stdio.h>
void main()
{
int i;int f[20]={1,1};

for (i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
printf("%d",f[i]);
}这个结果为什么会是20,而不是0?程序是怎么运行的?
搜索更多相关主题的帖子: include 
2013-08-13 11:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
自己填个表格就明白了

授人以渔,不授人以鱼。
2013-08-13 11:34
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
越界了

总有那身价贱的人给作业贴回复完整的代码
2013-08-13 11:42
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:0 
昨天就有人问这个问题了,以后注意下标越界。

你的f[20]位置就是i的位置,而你最后i=20,f[i]打印的就是i的值就是20

自己好好盘算一下,局部变量在栈上分配

不懂的话看下面这个帖子:
https://bbs.bccn.net/viewthread.php?tid=418980&page=1#pid2334460

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-13 12:00
awisebird_
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:185
注 册:2013-7-6
收藏
得分:0 
printf("%d",f[i]);//这一句中i=20,数组越界
2013-08-13 12:01
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
程序代码:
#define N 10

 #include<stdio.h>

 main()

 {
     int i;
     int a[N];
     printf("开始?");
     for(i=0;i<=N;i++)
         a[i]=0;
     printf("结束?");

 }//这个懂了你就明白了
2013-08-13 12:02
awisebird_
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:185
注 册:2013-7-6
收藏
得分:0 
程序代码:
#include <stdio.h>
void main()
{
int i;
int f[20]={1,1};

printf("%d\n",&i);
for (i=2;i<20;i++)
    printf("%d\n",&f[i]);
}

可以看一下变量的地址
2013-08-13 12:14
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
当i=19时,执行i++,i=20,再执行printf("%d\n",f[20]); 此时已经越界了
2013-08-13 12:34
FIRELARVA
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-8-13
收藏
得分:0 
回复 6楼 赵疯子
。。。。。。。。。。。误导小朋友
2013-08-13 13:29
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

 main(void)
{
 int i=0;
 int f[20]={1,1};
 

while(i<20)
{
    f[i]=f[i]+f[i-1];
    i++;
}

printf("%d\n sum is: %d\t",i,f[i]);

  system("PAUSE");   
  return 0;
}                      你看看吧。。。

武功再高也怕菜刀.
2013-08-13 13:41
快速回复:大伙儿帮我看看这道程序有什么问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024558 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved