設置 | 登錄 | 註冊

目前共有6篇帖子。

【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 最外面一層循環枚舉最左邊一位,第二層循環枚舉左邊第二位,依次類推,第五層循環枚舉最低位。


說是要用五層循環。結果我只用了兩個循環,用按位與運算的方式直接就實現了。
4樓 fengtianru117 2015-12-2 21:39
可以啊
5樓 fengtianru117 2015-12-2 21:39
算法還挺聰明的
6樓 巨大八爪鱼 2015-12-2 23:18
用的就是單片機里的位運算。

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。