| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖
标题:求教一个for循环问题
只看楼主 加入收藏
flyingzc
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2010-4-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求教一个for循环问题
int n;
cin>>n;
for(n-=3;n;n--)

假设输入4,当运行n--时,是运行4--,还是(n-=3)--呢
2010-04-08 10:07
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:5 
(n为1时)  n--

★★★★★为人民服务★★★★★
2010-04-08 10:11
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:5 
for循环语句 for(1;2;4) {。。3。。。}中1是初始值 2是判断条件 3是执行的代码  4是步长  ;执行的顺序是 1然后 判断2是否成立,若成立则3,4,2;不成立退出;
按照这个顺序楼主的这题解答的顺序是 n-=3 n这时等于1 为真,楼主没有3,所以执行4,也就是n-- ,这时n等于0 在判断n图满足条件退出
2010-04-08 10:17
flyingzc
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2010-4-1
收藏
得分:0 
#include<iostream>
using namespace std;
int fib(int);
int main()
{
    int n,answer;
    cout<<"cin"<<endl;
    cin>>n;
    answer=fib(n);
    cout<<answer<<endl;
    return 0;
}
int fib(int n)
{
    int x=1,y=1,answer=2;
    if(n<3)
        return 1;
    for(n-=3;n;n--)
    {
        x=y;
        y=answer;
        answer=x+y;
    }
    return answer;
}
那这段代码又是怎么一回事呢 ,如果n=5结果是5,如果按照2楼 3楼的解释 ,结果应该不是5吧
2010-04-08 11:01
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:10 
n-=3 为2,持续减1,直到不大于0,也就减2次
那么x,y,answer2次的值为123,235,最后得出5
2010-04-08 11:13
flyingzc
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2010-4-1
收藏
得分:0 
就是说n-=3,这个语句只执行一次啊?
2010-04-08 11:27
flyingzc
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2010-4-1
收藏
得分:0 
我彻底明白了 谢谢
2010-04-08 11:28
阿标兄
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2010-4-11
收藏
得分:0 
你明白了,我还没明!
2010-04-14 20:43
缝小肛
Rank: 2
等 级:论坛游民
帖 子:11
专家分:25
注 册:2010-4-15
收藏
得分:0 
#include<iostream>
using namespace std;

int main()
{   
    int n;
    int answer;
    int fib(int);

    cout<<"cin"<<endl;
    cin>> n;
    answer = fib(n);
    cout<<answer<<endl;
    return 0;
}

int fib(int n)
{
    int x = 1;
    int y = 1;
    int answer = 2;

    if(n < 3)
        return 1;
    for(n-=3; n; n--)
    {
        x = y;
        y = answer;
        answer = x + y;
    }
    return answer;
}

代码是写给老板看的,所以要美观,也便于自己观看,查找错误。强烈建议。
2010-04-15 16:53
快速回复:求教一个for循环问题
数据加载中...
 
   



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

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