|
发表于 2021-11-23 21:57:04
|
显示全部楼层
本帖最后由 jackz007 于 2021-11-23 21:58 编辑
- #include <stdio.h>
- /* 本函数可以接受十进制到 2 ~ 16 进制数的转换,输入参数 d 是准备转换的目标进制数 */
- char * foo(char s[] , int n , int d)
- {
- char b[] = "0123456789ABCDEF" ;
- int e , k ;
- if(d >= 2 && d <= 16) {
- for(k = n , e = 0 ; k ; k /= d , e ++) ;
- for(s[e] = 0 ; e ; n /= d , e --) s[e - 1] = b[n % d] ;
- } else s[0] = 0 ;
- return s ;
- }
- int main(void)
- {
- char s[256] ;
- int x ;
- scanf("%d" , & x) ;
- printf(" 二进制 : %s\n" , foo(s , x , 2)) ;
- printf(" 八进制 : %s\n" , foo(s , x , 8)) ;
- printf(" 十进制 : %s\n" , foo(s , x , 10)) ;
- printf("十六进制 : %s\n" , foo(s , x , 16)) ;
- }
复制代码
编译、运行实况:
- D:\00.Excise\C>g++ -o x x.c
- D:\00.Excise\C>x
- 98765
- 二进制 : 11000000111001101
- 八进制 : 300715
- 十进制 : 98765
- 十六进制 : 181CD
- D:\00.Excise\C>x
- 12
- 二进制 : 1100
- 八进制 : 14
- 十进制 : 12
- 十六进制 : C
- D:\00.Excise\C>
复制代码 |
|