|
发表于 2024-2-29 11:55:12
|
显示全部楼层
本帖最后由 jackz007 于 2024-2-29 13:19 编辑
二进制、八进制、十进制、十六进制只是对数值不同的表达形式而已,在人机交互的过程中,通过 scanf() 输入数据就是把文本转化为数值,而通过 printf() 输出数据则是把数据转化为文本,这一切都是为了顺应人类的习惯和要求。
- #include <stdio.h>
- char * dec2bin(char s[] , unsigned long long d)
- {
- unsigned long long k ;
- int n ;
- for(k = d , n = 0 ; k > 0 ; n ++) k /= 2 ;
- if(! n) s[n ++] = '0' ;
- s[n] = '\0' ;
- for(k = d ; k > 0 ; n -- , k /= 2) s[n - 1] = '0' + (k % 2) ;
- return s ;
- }
- main(void)
- {
- char s[65] ;
- unsigned long long d ;
- printf("请输入一个十进制数:") ;
- scanf("%I64u" , & d) ;
- printf("%s\n" , dec2bin(s , d)) ;
- }
复制代码
编译、运行实况:
- D:\[exercise]\C>dec2bin
- 请输入一个十进制数:18446744073709551615
- 1111111111111111111111111111111111111111111111111111111111111111
- D:\[exercise]\C>dec2bin
- 请输入一个十进制数:17293822569102704655
- 1111000000000000000000000000000000000000000000000000000000001111
- D:\[exercise]\C>dec2bin
- 请输入一个十进制数:12297829382473034410
- 1010101010101010101010101010101010101010101010101010101010101010
- D:\[exercise]\C>dec2bin
- 请输入一个十进制数:6148914691236517205
- 101010101010101010101010101010101010101010101010101010101010101
- D:\[exercise]\C>
复制代码 |
|