| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 567 人关注过本帖
标题:不同的循环语句,结果为什么不一样???
只看楼主 加入收藏
sqgege000
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2012-12-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
不同的循环语句,结果为什么不一样???
#include<stdio.h>
int main()
{
        int iSum=0;                                /*定义变量,表示计算总和*/
        int i=1;                                    /*表示每一个数字*/
        while(i<=100)                                /*使用while循环*/
        {
            iSum=iSum+i;                            /*进行累加*/
            i++;                                    /*增加数字*/
        }
        printf("100以内自然数1的总和为:%d\n",iSum);        /*将结果输出*/
        if(i<=100)
        {
            iSum=iSum+i;
            i++;
        }
        printf("100以内自然数2的总和为:%d\n",iSum);
        do
        {
            iSum=iSum+i;
            i++;
        }
        while(i<=100);
        printf("100以内自然数3的总和为:%d\n",iSum);
        for(;i<=100;i++)
        {
            iSum=iSum+i;
        }
        printf("100以内自然数4的总和为:%d\n",iSum);

        return 0;
}
执行结果:
100以内自然数1的总和为:5050
100以内自然数2的总和为:5050
100以内自然数3的总和为:5151.........????多出的101哪来的?????
100以内自然数4的总和为:5151.........????多出的101哪来的?????
求解释。


[ 本帖最后由 sqgege000 于 2012-12-12 22:20 编辑 ]
搜索更多相关主题的帖子: 数字 include 自然数 
2012-12-12 22:12
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:10 
程序代码:
 while(i<=100)                                /*使用while循环*/
        {
            iSum=iSum+i;                            /*进行累加*/
            i++;                                    /*增加数字*/
        }
        printf("100以内自然数1的总和为:%d\n",iSum);        /*将结果输出*/

        /*这里没有将i归0,所以if语句不会运行*/
        if(i<=100)
        {
            iSum=iSum+i;
            i++;
        } printf("100以内自然数1的总和为:%d\n",iSum);        /*将结果输出*/
        if(i<=100)
        {
            iSum=iSum+i;
            i++;
        }
        printf("100以内自然数2的总和为:%d\n",iSum);
       
        /*没有将i归0,故i=101*/
        do
        {
            iSum=iSum+i;  /*iSum = iSum+101*/
            i++;
        }
        while(i<=100);
        printf("100以内自然数3的总和为:%d\n",iSum);


I have not failed completely
2012-12-12 22:27
sqgege000
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2012-12-3
收藏
得分:0 
回复 2楼 神龙赖了
谢谢!请问在不增加变量的情况下,有什么办法可以让程序中的每个循环,i在使用的时候都能先清零?
2012-12-12 22:45
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:10 
#include<stdio.h>
int main()
{  
/**********************while循环****************************/
        int iSum=0;                 
        int i=1;
        while(i<=100)  
        {
            iSum=iSum+i;   
            i++;   
        }
        printf("100以内自然数1的总和为:%d\n",iSum);
/*********************do-while循环**************************/
        int iSum=0;                 
        int i=1;
        do
        {
            iSum=iSum+i;
            i++;
        }
        while(i<=100);
        printf("100以内自然数3的总和为:%d\n",iSum);
 /********************for循环*******************************/
        int iSum=0;                 
        int i=1;
        for(;i<=100;i++)
        {
            iSum=iSum+i;
        }
        printf("100以内自然数的总和为:%d\n",iSum);

        return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 小小战士 于 2012-12-12 22:56 编辑 ]

小小战士,战士中的战斗机!
2012-12-12 22:45
sqgege000
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2012-12-3
收藏
得分:0 
回复 2楼 神龙赖了
谢谢!请问在不增加变量的情况下,有什么办法可以让程序中的每个循环,i在使用的时候都能先清零? 在同一个main函数下
2012-12-12 22:46
无重量空气
Rank: 2
等 级:论坛游民
帖 子:36
专家分:36
注 册:2012-12-5
收藏
得分:0 
  好像真的好乱啊!求正确代码~~~
2012-12-12 22:48
sqgege000
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2012-12-3
收藏
得分:0 
回复 4楼 小小战士
非常感谢!这种重复定义的方法我想到了。
请问有没有一种方法,在不增加变量,不重复定义的情况下,每个循环,在使用i的时候都能先清零?
2012-12-12 22:50
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
#include<stdio.h>
int main()
{
        int iSum=0,jSum=0,kSum=0;                 
        int i=1,j=1,k=1;   
/**********************while循环****************************/
        while(i<=100)  
        {
            iSum=iSum+i;   
            i++;   
        }
        printf("100以内自然数1的总和为:%d\n",iSum);
/*********************do-while循环**************************/
        do
        {
            jSum=jSum+j;
            j++;
        }
        while(j<=100);
        printf("100以内自然数3的总和为:%d\n",jSum);
 /********************for循环*******************************/
        for(;k<=100;k++)
        {
            kSum=kSum+k;
        }
        printf("100以内自然数的总和为:%d\n",kSum);

        return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

小小战士,战士中的战斗机!
2012-12-12 22:56
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
回复 7楼 sqgege000
i清0不是系统自己清零的,是人为清0的,怎么可能不加变量不重复赋值自动清零

小小战士,战士中的战斗机!
2012-12-12 22:59
sqgege000
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2012-12-3
收藏
得分:0 
回复 9楼 小小战士
我还以为有什么命令或者什么参数可以代替人为。
呵呵,受教了!感谢!
2012-12-12 23:12
快速回复:不同的循环语句,结果为什么不一样???
数据加载中...
 
   



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

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