| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 625 人关注过本帖
标题:请大家研究下问题所在!!
只看楼主 加入收藏
雪山的猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:5
注 册:2012-12-23
结帖率:95.24%
收藏
已结贴  问题点数:4 回复次数:7 
请大家研究下问题所在!!
#include<stdio.h>
int main()
{
    int a,b;
    int i;
    while(scanf("%d",&a)==1&&a!=0)
    {
        i=0;
        while(b<=a)
        {
            b=i*(i+4);
            ++i;
        }
        printf("%d\n",i-1);
        printf("%d %d %d\n",(i-1)/16,(i-1)%16/4,(i-1)%4);
    }
    return 0;
}
#include<stdio.h>
int main()
{
    int a,b;
    int i;
    while(scanf("%d",&a)==1&&a!=0)
    {
        i=0;
        while(b=i*(i+4);<=a)
        {
            
            ++i;
        }
        printf("%d\n",i-1);
        printf("%d %d %d\n",(i-1)/16,(i-1)%16/4,(i-1)%4);
    }
    return 0;
}
俩处红色的部分只是不同(但我认为都一样呀!!),但输出的结果却大不同,纠结我了。请大家看啊看。解惑!!!!谢谢!!!
搜索更多相关主题的帖子: include return 
2013-05-06 20:36
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:0 
while(b<=a)
        {
            b=i*(i+4);
            ++i;
        }
先执行b<=a的语句
while(b=i*(i+4);<=a)
        {
            
            ++i;
        }
这个先执行b=i*(i+4)语句在判断b<=a
2013-05-06 20:41
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:2 
i=0;
        while(b<=a)
        {
            b=i*(i+4);
            ++i;
        }
b没有初始值,循环体可能一次也没有执行,所以是错误的
        i=0;
        while(b=i*(i+4);<=a)
        {
            
            ++i;
        }
这段程序判断条件错误,多了分号,去掉分号条件也怪怪的,如下程序可能是合适,供参考
        i=0;
        b=0;
        while(b<=a)
        {
           i++;
           b=i*(i+4);
         }

[ 本帖最后由 helloUJS 于 2013-5-6 20:50 编辑 ]
2013-05-06 20:49
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
收藏
得分:0 
while(b=i*(i+4)<=a)

这个分号加上难道编译不报错??

养成变量使用前初始化的习惯吧。。。

不然等你学到指针了。。那可咋办。。。
2013-05-06 21:37
雪山的猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:5
注 册:2012-12-23
收藏
得分:0 
回复 4楼 Ryker
这真不是问题,但也谢谢你!!
2013-05-06 22:06
雪山的猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:5
注 册:2012-12-23
收藏
得分:0 
回复 3楼 helloUJS
抱歉我有些错误,在来改正:
 while(b<=a)
        {
            ++i;
            b=i*(i+4);
        }
输出时对的()
图片附件: 游客没有浏览图片的权限,请 登录注册

while(b<=a)
        {
            b=i*(i+4);
            ++i;
        }却是错的??
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-05-06 22:21
教主
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-9
收藏
得分:0 
回复 6楼 雪山的猫
++i是先自加 把值赋给i i*(i+4)i已经加1了 而下边那个程序是先使用i 然后计算 所以结果不同 我认为是这样
2013-05-07 10:09
不眠的夜
Rank: 2
等 级:论坛游民
帖 子:63
专家分:96
注 册:2013-3-12
收藏
得分:2 
(1)while(b<=a)
        {
            ++i;
            b=i*(i+4);
        }
这个是先执行i=i+1=1;b=1*(1+4)=5=a满足条件;
      再执行i=i+1=2;b=2*(2+4)=12>a=5就会跳出循环。此时i=2,b=12,a=5;自然输出结果就是你那个了
(2)while(b<=a)
        {
            b=i*(i+4);
            ++i;
        }
这个是先执行b=0*(0+4)=0;i=i+1=1满足条件;
      再执行b=1*(1+4)=5=a;i=i+1=2满足条件;
      再执行b=2*(2+4)=12>a=5 但此时i仍要执行加1即i=3;然后在判断不满足循环条件,就会跳出循环。此时i=3,b=12,a=5;自然输出结果就是你那个了
所以你的两个结果都是正确的。
2013-05-07 11:50
快速回复:请大家研究下问题所在!!
数据加载中...
 
   



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

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