| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1091 人关注过本帖
标题:花了3天时间还是解不出来~求高手指教
取消只看楼主 加入收藏
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:8 
花了3天时间还是解不出来~求高手指教
要求是:
Abit和Bbit是2种2进制数,Abit的值根据输入的变量a,从无限循环的1010101010...中取前a个数作为Abit的 值。比如当a=3,Abit=101;a=4,Abit=1010;a= 7, Abit= 1010101。   Bbit 的值根据输入的变量b,所 有b位数的2进制数都是Bbit的制。  程序的要求是根据输入的a和b,显示出所有含有Abit的Bbit的值,按照由小到大的顺序。不能在程序中使用 string,array 和 recursion。b 的取值从1到31,所以Bbit最大可以有31位数;a的取值小于等于b
下面是一个程序运行情况的sample:
please enter b:
5
please enter a:
3
the results are:
00101
01010
01011
01101
10100
10101
10110
10111
11010
11011
11101
搜索更多相关主题的帖子: 时间 指教 
2009-10-23 10:14
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
我找Abit的方法是把a分成2种情况:当a是奇数或者偶数用不同的公式来得到Abit,如下:
if( a % 2 == 0 )
    {
        for( Abit = 0, N = 1; N < a; N += 2)
        {
            Abit += pow( 10, N );
        }
    }
   
 else
    {
        for( Abit = 0, N = 0; N < a; N += 2 )
        {
            Abit += pow( 10, N );
        }
    }   
由于整数型再长都不能达到31位,我就创建4个int的变量,来分割储存超过10位数的Abit,感觉起来这样的做法好像有点不太有效率  又想不出其他办法。  不过关于打印出所有包含Abit的Bbit的值,还是没有一点头绪
2009-10-23 10:51
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
是啊 要求好多   看的头晕   好用的方法都不能用~~ 没人解的出来么~
2009-10-23 11:13
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
多谢楼上  可惜我要的就是用c来编写的
2009-10-23 12:06
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
呵呵   多谢了   不过ls的这个代码只适合 a,b 都是int,a 和 b <= 10 的时候     而这个程序的要求是a和b都可以达到31位数    这样来说long long 都不够用
2009-10-23 12:36
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
哈哈 多谢楼上的  我居然忽略了直接用printf  一直想着要用什么公式~~~   这样如果是单独输出无限循环简易多了     不过还是解决不了 从Bbit中找出所有包括Abit的值
2009-10-23 12:58
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
以下是引用UserYuH在2009-10-23 15:37:03的发言:

只靠位运算,一个long型是够的,可以输出结果了,但对输入大点的位数,我的方法出来的结果就慢了。我再想想。
#include <stdio.h>
 
void dat(long n,int b)
{
 int i;
 for(i=b-1;i>=0;i--)
   {
    printf( ...
多谢~不过我测试了一下     当b等于31的时候就无法正常列出结果哦
2009-10-24 02:21
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
哈哈   楼上的还没睡啊  很好的方法 可惜就是慢了点   好像正解只要用普通的loop加上运算公式就可以了  我还在用printf尝试中
2009-10-24 02:51
ccapp
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-10-23
收藏
得分:0 
回复 21楼 StarWing83
呵呵 太感谢了   确实各个要求都很完善了   多谢 还有前面的UserYuH~~ 肯花时间帮我解决这个问题
2009-10-24 10:39
快速回复:花了3天时间还是解不出来~求高手指教
数据加载中...
 
   



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

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