阿摩線上測驗 登入

申論題資訊

試卷:100年 - 100 一般警察特種考試_二等_刑事警察人員犯罪分析組:計算機概論(包括計算機結構、資料結構、程式設計)#27370
科目:計算機概論
年份:100年
排序:0

申論題內容

二、用 C 語言,輸入一整數,其值介於 0 至 100,利用 do…while 方法,將整數轉換成 二進位數值,並將轉換值存放於 char C[10]陣列,最後列印 C[10]。(20 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
要實現這個功能,我們可以通過不斷地除以2並取餘的方式來將十進位數字轉換為二進位數字,然後將結果存儲在字元陣列中。由於二進位數字是從低位元到高位計算的,而字元陣列是從左到右存儲的,所以我們需要在最後將陣列中的內容逆序列印出來以正確表示二進位數字。
這裡有一個使用C語言實現的示例代碼,它利用do...while迴圈完成上述操作:
c
Copy code
#include <stdio.h>
#include <string.h>
int main() {
    int num;
    char C[10] = {0}; // 初始化字元陣列,全部元素設置為0
    int index = 0; // 用於跟蹤C陣列的當前位置
    // 獲取用戶輸入
    printf("請輸入一個介於0到100的整數: ");
    scanf("%d", &num);
    // 檢查輸入是否在指定範圍內
    if (num < 0 || num > 100) {
        printf("輸入的數位不在有效範圍內。\n");
        return 1;
    }
    // 使用do...while迴圈進行二進位轉換
    do {
        C[index++] = '0' + (num % 2); // 計算當前位元的二進位值,並存儲為字元
        num = num / 2;
    } while (num > 0 && index < 10);
    // 逆序列印字元陣列以顯示正確的二進位數字
    printf("轉換為二進位數字: ");
    for (int i = index - 1; i >= 0; i--) {
        putchar(C[i]);
    }
    printf("\n");
    return 0;
}
這段代碼首先初始化一個足夠大的字元陣列C來存儲二進位數字,然後通過不斷地除以2的方式計算給定數的每一位元二進位值,並將這些值作為字元存儲到陣列C中。由於二進位轉換過程產生的數位是從低位元到高位的,因此在最後需要逆序列印陣列C中的內容,以便正確顯示二進位數字。
請注意,這個程式假設使用者輸入的數值是有效的(介於0到100之間)。在實際應用中,你可能還需要添加額外的錯誤檢查來處理不合法的輸入。