思路(一):直接用int类型做,判断位数时,当然用循环从小到大循环,用"%"(模)的方式判断;你的第二第三个问题一起做比较好,用求模和整除的方式分割这个数,然后把分割的每一位数累加到另一个int类型上。
思路(二):用字符串做,用库函数strlen很容易判断位数,也很容易输出每位数,以及倒序;其实倒序更容易,只要倒着输出就行,不一定要重新放到另一个字符串中。
思路(三):用递归函数做,用一个int作为计数,一个char类型的用来逐个放置,控制好结束条件,即输入“\n”时结束,然后自然容易做到那3点。
其实,以上逆序的方法都可以换成对称的思路……
#include"stdio.h"
void
Convert(int
n)
{
int
x=0,a[100]
while(n)
{
a[x++]=n%2
n/=2
}
--x
printf("\n二进制为:\n")
while(x>=0)
printf("%d",a[x--])
}
void
main()
{
int
m
printf("请输入一个十进制数:\n")
scanf("%d",&m)
Convert(m)
}
这个吧
/////////////////////////////////////////
////////////////////////////////////////
你的意思是返回一个二进制数?
#include
"stdio.h"
int
Convert(int
n)
{
int
x=0,a[100],m=0
while(n)
{
a[x++]=n%2
n/=2
}
--x
while(x>=0)
m=10*m+a[x--]
return
m
}
void
main()
{
int
m,n
printf("请输入一个十进制数:\n")
scanf("%d",&m)
n=Convert(m)
printf("%d",n)
}
不过返回的数形式上是二进制。