1. 程式人生 > >7-15 BCD解密 (10 分)

7-15 BCD解密 (10 分)

BCD數是用一個位元組來表達兩位十進位制的數,每四個位元表示一位。所以如果一個BCD數的十六進位制是0x12,它表達的就是十進位制的12。但是小明沒學過BCD,把所有的BCD數都當作二進位制數轉換成十進位制輸出了。於是BCD的0x12被輸出成了十進位制的18了!

現在,你的程式要讀入這個錯誤的十進位制數,然後輸出正確的十進位制數。提示:你可以把18轉換回0x12,然後再轉換回12。

輸入格式:

輸入在一行中給出一個[0, 153]範圍內的正整數,保證能轉換回有效的BCD數,也就是說這個整數轉換成十六進位制時不會出現A-F的數字。

輸出格式:

輸出對應的十進位制數。

輸入樣例:

18

輸出樣例:

12

思路: 除以16得到的數就是十進位制的十位數 對16取餘的數就是個位數 注意!0-16的十進位制還是原來的數

//題目一大串 看了半天  其實就是將十六進位制數換算成十進位制 就像將十進位制換算成二進位制一樣
#include<stdio.h>
int main ()
{
  int a;
  scanf("%d",&a);
  if(a>=0&&a<=16){
    printf("%d",a);
  }
  else {
    printf("%d%d",a/16,a%16);
  }
  return 0;
}