利用栈对两个数据存储并进行操作+-*/运算

蓝咒 提交于 2019-12-01 05:44:06
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define Max 100
 4 
 5 int *p;
 6 int *tos;
 7 int *bos;
 8 
 9 /*添加一个数据放到堆栈对顶端*/
10 void push(int i)
11 {
12     if (p > bos)
13     {
14         printf("堆栈以满\n");
15         return;
16     }
17     *p = i;
18     p++;
19 }
20 
21 /*丛堆栈顶端取出一个数据*/
22 int pop(void)
23 {
24     p--;
25     if (p < tos)
26     {
27         printf("堆栈下溢\n");
28         return 0;
29     }
30     return *p;
31 }
32 
33 int main()
34 {
35     int a, b;
36     char s[80];
37     p = (int *)malloc(Max*sizeof(int));
38     if (!p)
39     {
40         printf("分配内存失败");
41         exit(1);
42     }
43     tos = p;
44     bos = p + Max - 1;
45     printf("请输入第一个数据:\n");
46     scanf("%d", &a);
47     push(a);
48     printf("请输入第二个数据:\n");
49     scanf("%d", &b);
50     push(b);
51     printf("请输入操作符:\n");
52     scanf("%s", s);
53     switch (*s)
54     {
55     case '+':
56         a = pop();
57         b = pop();
58         printf("结果是a+b = %d\n", (a + b));
59         push(a + b);
60         break;
61     case '-':
62         a = pop();
63         b = pop();
64         printf("结果是a-b = %d\n", (a - b));
65         push(a - b);
66         break;
67     case '*':
68         a = pop();
69         b = pop();
70         printf("结果是a*b = %d\n", (a*b));
71         push(a*b);
72         break;
73     case '/':
74         a = pop();
75         b = pop();
76         printf("结果是a/b = %d\n", (a / b));
77         push(a / b);
78         break;
79     default:
80         printf("请输入正确操作符\n");
81     }
82 
83     getchar();
84     return 0;
85 }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!