2010年2月2日 星期二

Problem 10473 Simple Base Conversion,數值轉換

Problem 10473 此題是若輸入為一10進位數,則輸出它的16進位數;若輸入一16進位數,則輸出它的10進位數;若輸入負值,則結束。

此題只需用簡單的格式化輸出即可。以字串讀入輸入數值,若為負值,只需判斷索引為 0 的字元是否為字元 "-" (減號);若為16進位數,只需判斷索引為 0 的字元是否為字元 "0";以上判斷都為否時,則此數為10進位數。

當讀進10進位數時使用 %d 讀取,使用 0x%X 輸出( %x 為無號的十六進位整數);讀進16進位數時使用 %x 讀取,使用 %d 輸出即可。

以下為主程式程式碼:
int i, n;
char str[10];
while (1)
{
scanf ("%s", str);
if (str[0] == '-') break;
else if (str[0] != '0')
sscanf(str ,"%d" ,&n), printf("0x%X\n", n);
else
sscanf(str ,"%x" ,&n), printf("%d\n", n);
}
return 0;

By David.K

p10473題目連結
回ACM題庫目錄
回首頁

沒有留言: