問題描述:輸入一個十進制整數(可能大於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;
}
測試案例: