作者共發了4篇帖子。 內容轉換:不轉換▼
 
點擊 回復
544 5
【C语言】基础练习 01字串
一派護法 十九級
1樓 發表于:2015-12-2 21:07
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>

【我的代码】
#include <stdio.h>

#define _BV(n) 1<<n

int main()
{
    int i;
    unsigned char d;
    for (d = 0x00; d <= 0x1f; d++)
    {
        for (i = 4; i >= 0; i--)
        {
            if (d & _BV(i))
                putchar('1');
            else
                putchar('0');
        }
        putchar('\n');
    }
    return 0;
}

【运行结果】
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111

--------------------------------
Process exited after 0.01928 seconds with return value 0
Press any key to continue . . .
一派護法 十九級
2樓 發表于:2015-12-2 21:07
评测结果  正确   得分  100  
CPU使用  15ms  
内存使用  1.601MB  
一派護法 十九級
3樓 發表于:2015-12-2 21:08
锦囊1 使用五层循环。
锦囊2 最外面一层循环枚举最左边一位,第二层循环枚举左边第二位,依次类推,第五层循环枚举最低位。


说是要用五层循环。结果我只用了两个循环,用按位与运算的方式直接就实现了。
一派護法 十九級
6樓 發表于:2015-12-2 23:18
用的就是单片机里的位运算。

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:544 回複數:5
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2015-12-2 23:18
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。