| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 720 人关注过本帖
标题:循环问题(两个循环有何不同?怎么去理解?)........(运行结果是不一样的 ...
只看楼主 加入收藏
心雨123aa
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:55
专家分:38
注 册:2010-3-28
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
循环问题(两个循环有何不同?怎么去理解?)........(运行结果是不一样的!!)
#include<stdio.h>
void main()
{
    int i=1,n;
    long int s=1,p=0;
    while(i<=15)
    {
        for(n=1;n<=i;n++)
        {
            s=s*n;
        }
        p=p+s;
        i++;
    }
    printf("%ld",p);
}



#include<stdio.h>
void main()
{
    int i=1,n=1;
    long int s=1,p=0;
    while(i<=15)
    {
        for(;n<=i;n++)
        {
            s=s*n;
        }
        p=p+s;
        i++;
    }
    printf("%ld",p);
}
搜索更多相关主题的帖子: 运行 结果 何不同 
2010-04-08 20:13
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:3 
程序代码:
    while(i<=15)
    {
        for(n=1;n<=i;n++)  //因为for是在while里面的,因此当For循环执行完毕后会判断while,如果while为真,则再次执行for循环,当然,里面的 n = 1; 也会被再次执行,n 被重新赋值
        {
            s = s*n;
        }
        p=p+s;
        i++;
    }


程序代码:
    while(i<=15)
    {
        for(;n<=i;n++)  //因为for是在while里面的,因此当For循环执行完毕后会判断while,如果while为真,则再次执行for循环,由于for的第一个语句为空语句,则跳过了 n = 1; 这一语句,n 没有被重新赋值,从而导致与上面的结果不一样。
        {
            s = s*n;
        }
        p=p+s;
        i++;
    }


其实就是关系到 n 是否被重新赋值的问题。





[ 本帖最后由 lixnkei 于 2010-4-8 20:28 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-04-08 20:26
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:1 
很明显的不同。第一种,for循环是从1到i,。但是第二种却不是,自己体会一下吧 。
2010-04-08 20:32
fotomaker
Rank: 2
等 级:论坛游民
帖 子:33
专家分:60
注 册:2009-2-20
收藏
得分:2 
回复 楼主 心雨123aa
同是在while里面,但是第一个情况是for循环中n=1开始的,而第二个for循环中n的值跳过了n=1,所以结果不同
2010-04-08 21:06
雪融清寒
Rank: 2
等 级:论坛游民
帖 子:54
专家分:37
注 册:2010-3-28
收藏
得分:1 
第一个程序中,每次只循环到for的时候都要执行一次n=1,而第二个程序中执行到for的时候n不被重新赋值,其实很简单的,自己体会
2010-04-08 21:21
雪融清寒
Rank: 2
等 级:论坛游民
帖 子:54
专家分:37
注 册:2010-3-28
收藏
得分:1 
一楼的说的很清楚啊,顶
2010-04-08 21:22
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
收藏
得分:2 
第一个情况是每次都是从1到i
第二个情况是第一边是从1到i,以后都是从当前的i到i++
2010-04-08 21:55
快速回复:循环问题(两个循环有何不同?怎么去理解?)........(运行结果是不一 ...
数据加载中...
 
   



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

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