编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。
在本题中,二进制、八进制及十进制算法思路一样,采取模除的方式,输出各个位置的数,接着采用逆序输出。在十六进制中"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; }
本文出自 “朔月云影” 博客,请务必保留此出处http://19940325.blog.51cto.com/10789287/1718698
编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。
原文地址:http://19940325.blog.51cto.com/10789287/1718698