#include<stdio.h>
//栈
#include<malloc.h>
#define N 2
typedef struct node
{
int data;
struct node *next;
}NODE;
int main()
{
NODE *p,*q,*h;
int n;
printf("pelase input your data!\n");
scanf("%d",&n);
p=h=(NODE *)malloc(sizeof(NODE));
while(n>0)
{
q=(NODE *)malloc(sizeof(NODE));
q->data=n%N;
n/=N;
q->next=p;
p=q;
}
while(p!=h)
{
printf("%d",p->data);
p=p->next;
}
}
#include<stdio.h>
//递归
#define N 2
int main()
{
void fun(int n);
int n;
printf("please input your data!\n");
scanf("%d",&n);
fun(n);
}
void fun(int n)
{
if(n<N)
{
printf("%d",n);
return 0;
}
else
{
fun(n/N);
printf("%d",n%N);
}
}
随便写两个你吧也练练手,因为进制转换最好的方法就是递归和栈了。数组的辗转相除,不能反映算法的本质思想。
还有一种位操作,那个就不写了,没有可读性。
你的程序 数组应该要初始化,不然有可能报错,而且不好检查错误。