标题:谁给解释下程序运行结果
只看楼主
wang155423
Rank: 6Rank: 6
等 级:侠之大者
帖 子:216
专家分:408
注 册:2011-9-4
结帖率:100%
已结贴  问题点数:20 回复次数:3 
谁给解释下程序运行结果
#include "stdio.h"
void main()
{
    int i,j,t,m;
    int x[4]={0};
    for(i=1;i<=3;i++)
        printf("%d\n",x[i]);
    for(j=0;j<8;j++)
    {
        m=3;
        do{
            t=j%2;
            x[m--]=t;
        }while((j=j/2)!=0);
    for(i=1;i<=3;i++)
        printf("%d",x[i]);
    }   
}
程序的结果为什么会有无穷无尽的001出现????真的想不通啊。。。
搜索更多相关主题的帖子: include void 
2012-10-12 08:12
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
得分:10 
#include "stdio.h"
void main()
{
    int i,j,t,m;
    int x[4]={0};
    for(i=1;i<=3;i++)
        printf("%d\n",x[i]);
    for(j=0;j<8;j++)   //j不可能大于8,原因在下面
    {
        m=3;
        do{
            t=j%2;
            x[m--]=t;
        }while((j=j/2)!=0);//原因是此处的j一直在改变,此处j的值最后结构一直为0  0永远小于8,所以会一直循环输出0和1
    for(i=1;i<=3;i++)
        printf("%d",x[i]);
    }   
}
2012-10-12 09:05
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
得分:10 
while((j=j/2)!=0)????这一句正常???为什么会出现无穷的
001呢,就是因为外层for()循环永远在执行....主要原因在于你
每次都重新给j赋值 0 了....,这里要注意哦....
2012-10-12 09:12
wang155423
Rank: 6Rank: 6
等 级:侠之大者
帖 子:216
专家分:408
注 册:2011-9-4
得分:0 
问题解决了,谢谢
2012-10-12 19:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-382989-1-1.html




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

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