?? 任意進制轉換.c
字號:
/* 函數trans將無符號整數n翻譯成d(2<=d<=16)進制表示的字符串s */
#define M sizeof(unsigned int)*8
int trans(unsigned n, int d, char s[])
{
static char digits[] ="0123456789ABCDEF"; /* 十六進制數字的字符 */
char buf[M+1];
int j, i = M;
if(d<2||d>16)
{
s[0]='\0'; /* 不合理的進制,置s為空字符串 */
return 0; /* 不合理的進制,函數返回0 */
}
buf[i]='\0';
do
{
buf[--i]=digits[n%d]; /*譯出最低位,對應字符存入對應工作數組中*/
n/=d;
}while(n);
/* 將譯出在工作數組中的字符串復制到s */
for(j=0;(s[j]=buf[i])!='\0';j++,i++);
/* 其中控制條件可簡寫成s[j]=buf[i] */
return j;
}
/* 主函數用于測試函數 trans() */
main()
{
unsigned int num = 253;
int scale[]={2,3,10,16,1};
char str[33];
int i;
clrscr();
for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++)
{
if(trans(num,scale[i],str))
printf("%5d = %s(%d)\n",num,str,scale[i]);
else
printf("%5d => (%d) Error! \n",num,scale[i]);
}
printf("\n Press any key to quit...\n");
getch();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -