藍橋杯練習系統:十進制轉十六進制

問題描述

  十六進制數是在程序設計時經常要使用到的一種整數的表示方式。它有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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章