首页 > 其他 > 详细

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

时间:2019-10-12 13:32:12      阅读:75      评论:0      收藏:0      [点我收藏+]
 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 }

 

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

原文:https://www.cnblogs.com/liugangjiayou/p/11660906.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!