将十进制输出为二进制
编写函数,函数的参数是整数N,在函数中输出整数N的二进制形式。主函数中输入整数a和b,输出从a到b的所有整数的二进制形式。
#include<stdio.h>
#include<math.h>
int two(int n);
int main()
{
int a,b,c;
scanf("%d %d",&a,&b);
for(int i=a;i<=b;i++)
{
c=two(i);
printf("%d\n",c);
}
return 0;
}
int two(int n)//用数学方法来计算
{int i=1,m=0,a,d;
while(1)
{for(i=1;;i++)
{a=pow(2,i);
if(n%a==n)//找出最高位的1;
{d=i-1;
n=n-pow(2,d);//n减去已经求出的最高位1的值,继续求剩下的数的2进制表达;
m=m+pow(10,d);//将求出的1的位数加上
break;
}
}
if(n==0)
break;
i=1;
}
return m;
}
将二进制输出为十进制
编写一个函数,其参数是一个整数N(N中只有1和0两个数字),返回值也是一个整数(假设是R),规则是整数N写
出来是R的二进制形式。例如:参数是1111,返回值应是15。主函数中输入多组数据,每个数据是一个只由0和1构成
的整数(二进制数),输出它对应的十进制整数。所有数据都在int型范围内。
输入样例:
0 1 10 11 1001 1111 110011 1111111
输出样例:
0
1
2
3
9
15
51
127
#include<stdio.h>
#include<math.h>
int ten(long long int a);
int main()
{long long int a;
int b;
while(scanf("%lld",&a)!=EOF)
{
b=ten(a);
printf("%d\n",b);
}
return 0;
}
int ten(long long int a)
{int m=0,c,k=0;
while(a>0)
{c=a%10;
if(c==1)
m=m+pow(2,k);
k++;
a=a/10;
}
return m;
}