本文实例讲述了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语言程序设计有所帮助。