十進制轉化爲十六進制,C語言

問題描述:輸入一個十進制整數(可能大於15),轉化爲十六進制輸出
解決方法:除16取餘數倒排,取餘結果放入到str1,倒排結果放入到str2
編譯環境:vc++6.0
代碼:

#include <stdio.h>

/*輸入一個十進制整數(可能大於15),轉化爲十六進制輸出*/
/*十進制轉十六進制,方法:除16取餘數倒排
取餘結果放入到str1,倒排結果放入到str2
*/
char* convert(int x)
{
	static char hexchars[] = "0123456789ABCDEF";   //十六進制對應的數組
	static char str1[81], str2[81], * p = str1, * q = str2;
	static int n = 0;                    //計算字符長度,爲倒排做準備
	//str1  存儲取餘數組,  str2倒排存儲數組

	while (x)   //取餘                   
	{
		*p++ = hexchars[x % 16];
		x /= 16;
		n++;
	}

	p--;                  //指針回退,因爲多加了一步

	while (n)
	{
		*q++ = *p--;
		n--;
	}
	return str2;
}

int main()
{
	int x;
	printf("請輸入一個十進制數:\n");
	scanf("%d", &x);
	printf("對應的十六進制數是:%s\n", convert(x));
	return 0;
}

測試案例:
在這裏插入圖片描述

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