本文实例讲述了C语言用栈实现十进制转换为二进制的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#include<stdio.h>
#include<malloc.h>
#include<math.h>
#include<string.h>
#include "process.h"
#define SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef struct
{
int a;
} SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
SqStack S; //定义全局变量
Status InitStack(SqStack *S)
{
S->base=(SElemType *) malloc (SIZE* sizeof (SElemType));
if (!S->base) exit (OVERFLOW);
S->top=S->base;
S->stacksize=SIZE;
return OK;
}
Status Push(SqStack *S,SElemType e)
{
if (S->top-S->base>=S->stacksize)
{
S->base=(SElemType *) malloc ((S->stacksize+STACKINCREMENT)* sizeof (SElemType));
if (!S->base) exit (OVERFLOW);
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCREMENT;
}
*S->top++=e;
//printf("%dwww\n",*--S->top);
return OK;
}
Status Stackempty(SqStack *S)
{
if (S->top==S->base)
return TRUE;
else
return FALSE;
}
Status Pop(SqStack *S,SElemType *e)
{
if (S->top==S->base) return ERROR;
*e=*--S->top;
return OK;
}
Status DtoBTrans( int N,SqStack *S)
{
SElemType e;
while (N)
{
e.a=N%2;
Push(S,e);
N=N/2;
}
while (!Stackempty(S))
{
Pop(S,&e);
printf ( "%d" ,e);
}
return OK;
}
void main()
{
int x;
InitStack(&S);
printf ( "请输入十进制数:" );
scanf ( "%d" ,&x);
DtoBTrans(x,&S);
}
|
运行结果:
希望本文所述对大家C语言程序设计有所帮助。