编写一个函数,其参数是一个整数N,返回值也是一个整数(假设是R),规则是整数R写出来(输出出来)是N的二进制形式。例如:参数是15,返回值应是1111。主函数中输入若干组整数,依次输出其二进制形式。
输入样例:
15 16 17 63 64 65
结尾无空行
输出样例:
1111
10000
10001
111111
1000000
1000001
结尾无空行
输入样例:
0 1 123 456 789
结尾无空行
#include <stdio.h>
int f(int n) {
int r = 0;
int b = 1;
while(n) {
r += (n % 2) * b;
n /= 2;
b *= 10;
}
return r;
}
int main()
{
int n;
while (scanf("%d", &n) == 1)
printf("%d\n", f(n));
return 0;
}
一个简单的实现:
#include <stdio.h>
void OctToBinary(int num,char * str){
int i,j,k=0;
int zero = 0;
for(i=31;i>=0;i--){
j = (num>>i)&1;
if(zero==0&&j==1){ //直到整数的二进制位第一个为1的二进制为,开始读入字符串数组
zero=1;
str[k]='1';
//printf("i=%d,j=%d,str[%d]=%c\n",i,j,k,str[k]);
k++;
}
if(zero==1){ //读取整数二进制为1后面的其余二进制位
str[k] = '0'+j;
//printf("i=%d,j=%d,str[%d]=%c\n",i,j,k,str[k]);
k++;
}
}
}
int main(void){
int num;
char str[32]={0}; //初始化字符数组
int i=0;
while(i<5){
scanf("%d",&num);
OctToBinary(num,str);
printf("%d to binary : %s\n",num,str);
}
return 0;
}