C语言中常用的整数有 short、int 和 long 三种类型,通过 printf 函数,可以将它们以八进制、十进制和十六进制的形式输出。
虽然部分编译器支持二进制数字的表示,但是却不能使用 printf 函数输出二进制,这一点比较遗憾
十进制想要用二进制需要使用其他方式,先看下转化步骤。
10进制数除以n得到商依次除以n,直到商为0,然后将所有余数倒序排列(“除 N 取余,逆序排列)
以整数42转化为二进制为例
因此,刚好可以利用栈的“先进后出”的特性将每一次得到的余数进行入栈,再出栈。
#include
int top = -1;
// 入栈
void push(char *data,char elem)
{
top++;
*(data+top) = elem;
}
void pop(char *data)
{
if(top == -1)
{
return ;
}
printf("%d",*(data+top));
top--;
}
int main()
{
char data[100] = {'\0'};
int num;
printf("请输入一个数:");
scanf("%d",&num);
while(num / 2 != 0)
{
push(data,num%2);
num = num / 2;
}
push(data,num%2);
while(top!=-1)
{
pop(data);
}
return 0;
}