問題描述
十六進制數是在程序設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示 十進制數的0至15。十六進制的計數方法是滿16進1,所以十進制數16在十六進制中是10,而十進制的17在十六進制中是11,以此類推,十進制的30在十六進制中是1E。
給出一個非負整數,將它表示成十六進制的形式。
輸入格式
輸入包含一個非負整數a,表示要轉換的數。0<=a<=2147483647
輸出格式
輸出這個整數的16進製表示
樣例輸入
30
樣例輸出
1E
關鍵字 :循環、整數、求餘、判斷
代碼:
#include <stdio.h>
int main()
{
int n,k,i;//n:輸入的整數,k:記錄每次模運算後的餘數,i:計數器
char str[10];//將每次運算後的餘數轉換爲字符存儲
scanf("%d",&n);
for(i=0;n>=0;i++,n=n/16)
{
if(i==0&&n==0//當輸入的值爲0時,直接輸出0,結束程序
{
k=0;printf("0");return 0;
}
//由於n的取值範圍包含0所以for語句中的條件判斷爲 n>=0,因此此處是避免最後n/16運 算後n=0存入str內
if(n==0)
break;
k=n%16;
if(k>9&&k<16)
{
switch(k)
{
case 10:str[i]='A';break;
case 11:str[i]='B';break;
case 12:str[i]='C';break;
case 13:str[i]='D';break;
case 14:str[i]='E';break;
case 15:str[i]='F';break;
}
}
else
str[i]=k+'0';
}
str[i]='\0';
i=i-1;
while(i>=0)
{
printf("%c",str[i--]);
}
return 0;
}