二进制转换十进制
# include <stdio.h>
# include <math.h>
# include <malloc.h>
# include <stdlib.h>
# define STACK_INIT_SIXE 20
# define STACKINCREMENT 10 //栈的增量
typedef char ElemType;
typedef struct
{
ElemType *base;
ElemType *top;
int stacksize;
}sqStack;
void intitStack(sqStack *s)
{
s ->base = (ElemType *)malloc(STACK_INIT_SIXE * sizeof(ElemType));
if (!s->base)
exit(0);
s ->top = s->base; //初始化栈
s->stacksize = STACKINCREMENT;
}
void Push(sqStack *s,ElemType e)
{
if (s->top - s->base >= s->stacksize) //栈满
{s->base = (ElemType *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!s->base)
exit(0);
s->top=s->base+s->stacksize;
s->stacksize=s->stacksize + STACKINCREMENT; }
*(s->top) = e;
s ->top++;
}
void Pop(sqStack *s,ElemType *e)
{
if(s->top ==s ->base)return;
*e = *--(s->top);
}
int StackLen(sqStack s)
{return (s.top -s.base);}
int main()
{
ElemType c;
sqStack s;
int len ,i;
char a[10];
double sum = 0;
printf("Please input a Binary digit\n");
intitStack(&s);//创建一个栈
scanf("%c",&c);
while(c !='#')
{
Push(&s,c);
scanf("%c",&c);
}
getchar();
len = StackLen(s);
for(i =0;i<len;i++)
{Pop(&s,&c);
sum = sum + (c -48)*pow(2,i);
}
printf("Decimal is %ld \n",sum);
return 0;
}
求大侠们看看为什么转换不了呢?输入什么最后都没转化啊!谢谢了
[解决办法]
- C/C++ code
十进制转化为二进制 熟练使用 itoa()库函数 #include<stdio.h> #include<stdlib.h> int main() { int num,result; scanf("%d",&num); //输入一个十进制数 char str[20]; result = atoi( itoa(num, str, 2) ); printf("%d\n", result); return 0; }
[解决办法]
最后一句printf("Decimal is %ld \n",sum);不对,sum是double类型,用%f吧
[解决办法]