在這個問題中你被要求寫一個程式來做數字基底的轉換。給你一個10進位或16進位的數,請你把他轉換成16進位或10進位的數。16進位的數總是以0x當開頭,其他所有的數都被當成是10進位。輸入中不會有不合法的數。
輸入說明 :
輸入含有多組測試資料。每組測試資料一列有一個不為負數的數,可能是一個10進位或16進位的數。請根據上述的敘訴判斷。這個數10進位的值一定小於 231 。 若輸入為負的10進位數字時代表輸入結束。請參考 Sample Input。
輸出說明 :
對每組測試資料輸出一列。如果輸入的是10進位的數,請輸出其16進位的值。如果輸入是16進位的數,請輸出其10進位的值。 如同輸入一樣,輸出的16進位的數也請以 0x 開頭。請參考Sample Output。
範例輸入 :
4
7
44
0x80685
-1
範例輸出 :
0x4
0x7
0x2C
525957
出處 :
ACM 10473
程式碼 :
#include<stdio.h> int main() { int n; char s[100]; while(scanf("%s",s)==1) { if(s[0]=='-') break; if(s[1]=='x') { sscanf(s,"%x",&n); printf("%d\n",n); } else { sscanf(s,"%d",&n); printf("0x%X\n",n); } } return 0; }
http://zerojudge.tw/ShowProblem?problemid=c009
沒有留言:
張貼留言