在本题中,二进制、八进制及十进制算法思路一样,采取模除的方式,输出各个位置的数,接着采用逆序输出。在十六进制中"0123456789abcdef"[num%16],求出各位的数字。
#include<stdio.h> void reverse(int len,char arr[]) //逆置 { int left =0; int right =len -1; while(left < right) { char temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; right --; left ++; } } void itob(int num,char s[], int n) //以n进制形式输出 { int i=0; while(num) { if(n<10) { s[i]=num% n+‘0‘; num /= n ; //模除 i++; } else if(n==16) { s[i]="0123456789abcdef"[num%16]; num/=16; i++; } else { break; } } s[i]=‘\0‘; reverse(i , s); } int main() { char s[32]; int n=0; int num; scanf("%d",&n); printf("num="); scanf("%d",&num); itob(num,s, n); printf("%s\n",s); return 0; }
时间: 2024-10-22 13:20:19