首先宣告三個 char 以讀入所要使用的資料,如同以下程式碼:
char hexOne[4], hexTwo[4], op;
scanf("%s %c %s", hexOne, &op, hexTwo);
讀入後,我將它轉成 10 進位,使用兩個整數(h1、h2)接收:
sizeOne = strlen(hexOne), sizeTwo = strlen(hexTwo);
int h1 = 0, h2 = 0, i, k, sum = 0;
for (i = sizeOne - 1, k = 1; i >= 0; i --, k *= 16)
h1 += wordJudge(hexOne[i]) * k;
for (i = sizeTwo - 1, k = 1; i >= 0; i --, k *= 16)
h2 += wordJudge(hexTwo[i]) * k;
wordJudge 函式:
int wordJudge(char hex)
{
if (hex == 'A') return 10;
else if (hex == 'B') return 11;
else if (hex == 'C') return 12;
else if (hex == 'D') return 13;
else if (hex == 'E') return 14;
else if (hex == 'F') return 15;
else return (hex - '0');
}
接著使用函式將它轉成 2 近位後輸出:
void printBinary(int n)
{
int i;
for (i = 4096; i >= 1; i /= 2)
if (n / i) printf("%d", n / i), n %= i;
else printf("0");
}
至於判斷加或減,又怎麼輸出,就交給你們去寫了。
By David.K
p446題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言