| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 619 人关注过本帖
标题:做功课的一些疑问
取消只看楼主 加入收藏
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
结帖率:87.5%
收藏
已结贴  问题点数:5 回复次数:2 
做功课的一些疑问
我是初学者,目前学到loop那一块。
题目要求一个整数的 二进制表达式里1的数量。
比如55=2^5*1+2^4*1+2^3*0+2^2*1+2^1*1+2^0*1
二进制表达式就是110111
那么函数所得的结果应该是5.
我的思路是这样
55为奇数
55/2=27奇数
27/2=13奇数
13/2=6偶数
6/2=3奇数
3/2=1奇数。
我的思路是:  1的数量和按以上方法得到的奇数的数量相等。
但while和for只帮那些符合条件的情况运作。比如每等于一次奇数那计数器+1. 以55为例子,到13的时候计数器为3,但到6的时候loop就停止了,少了一个。
我就是想知道有没有方法能让得到奇数的时候计数器+1,得到偶数时计数器不变。
写了一天了,都是错的,求大家帮帮忙

还有点没说,不让用循环,指明要用loop.
循环的code是这样:
int binr(int i){
return
    (i==1)? 1:
    (i%2==1)? 1+binr(i/2):
    binr(i/2);
}

[ 本帖最后由 wbw626 于 2013-6-16 14:45 编辑 ]
搜索更多相关主题的帖子: 计数器 二进制 表达式 
2013-06-16 14:09
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
收藏
得分:0 
回复 2楼 雪狼MJ
题目要求是用只能用for或者while写出,而且goto这个太高端了,没学过啊。
另一个要求:i=55,那么 需要fuct1(i)=5.
能帮忙用基础点的东西吗?
谢谢啦!!!
2013-06-16 14:51
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
收藏
得分:0 
回复 5楼 雪狼MJ
谢谢你了,总算能解决了。
我去研究你给的代码了。
2013-06-16 15:04
快速回复:做功课的一些疑问
数据加载中...
 
   



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

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