| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖, 1 人收藏
标题:傻问题,我怎么少了一次循环?
只看楼主 加入收藏
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:85.29%
收藏(1)
已结贴  问题点数:5 回复次数:7 
傻问题,我怎么少了一次循环?
#include <stdio.h>
main()
{int k,n,m;
 n=10;m=1;k=1;
 while(k++<=n) m*=2;
 printf("%d\n",m);
 system("PAUSE");
 return 0;
}
运行结果是1024,这是书上的填空题。可我算出来只能是512,少了一次循环:
k=1, k++=2, m=1*2=2
k=2, k++=3, m=2*2=4 .......
然后k分别等于3,4...9, k++分别等于4,5...10, m算出来只是到512,当k=9时,k++=10, 我的m只有到512,我怎么少一次循环的?     
搜索更多相关主题的帖子: include 
2011-07-17 16:03
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
也许是编译器对后增量的解释不同。这样试一试
while(k<=n) {
    m*=2;
    k++;
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-07-17 16:12
bluefeather
Rank: 1
来 自:南京
等 级:新手上路
帖 子:46
专家分:7
注 册:2008-10-14
收藏
得分:2 
while(k++<=n) m*=2; 这条程序你没懂呀,k++<=n 是k先与n比,然后再加1,k是要运行到10才会停止的,当k=9时,k++=10,m当然只有512啦!
2011-07-17 17:45
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 3楼 bluefeather
这程序正确结果就是1024
2011-07-17 17:47
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
k++=10
满足k<=10
还有一次循环
2011-07-17 17:48
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
谢谢楼上楼下的各位。

[ 本帖最后由 wxz11191975 于 2011-7-17 19:44 编辑 ]
2011-07-17 18:05
Hujc71
Rank: 2
等 级:论坛游民
帖 子:49
专家分:65
注 册:2010-3-31
收藏
得分:2 
#include <stdio.h>
main()
{int k,n,m;
n=10;m=1;k=1;
while(++k<=n) m*=2;
printf("%d\n",m);
system("PAUSE");
return 0;
}
这样就没有问题了,先比再自加1,而不是先自加1在比!
2011-07-17 18:48
Hujc71
Rank: 2
等 级:论坛游民
帖 子:49
专家分:65
注 册:2010-3-31
收藏
得分:0 
看错了,应该改成小于号就可以了!
2011-07-17 18:52
快速回复:傻问题,我怎么少了一次循环?
数据加载中...
 
   



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

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