#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#define MAXOP 100 //操作数或运算符大小
#define NUMBER '0'//表示找到数的信号
#define MAXVAL 100//栈VAL的最大深度
#define BUFSIZE 100
int sp = 0;
double val[MAXVAL];//值栈
char buf[BUFSIZ];
int bufp = 0 ;
int gettop ( char s[] );//取出栈顶元素
void push (double f);//入栈操作
double pop (void);//出栈操作
int getch(void);
void ungetch( int c);
int main (){
int type;
double op2;
char s[MAXOP];
while ( ( type = gettop( s )) != EOF ){//检查字符是不是停止符
switch (type)//检查字符
{
case NUMBER:
push( atof (s) ); //如果返回的是‘0’,将读取的字符转换成浮点数,并压入栈中
break;
case '+':
push ( pop () + pop ());
break;
case '*':
push (pop() * pop() );
break;
case '-':
op2 = pop();
push ( pop() - op2);
break ;
case '/':
op2 = pop();
if( op2 != 0)
push (pop() / op2 );
else printf("err
练习4 - 3 在有了基本框架后,对计算器程序进行扩充就比较简单了。在该程序中加入取模 (%)运算符并注意负数的情况
最新推荐文章于 2024-01-10 09:30:53 发布
本文介绍了如何在已有基础的计算器程序中添加取模运算符功能,并详细讨论了如何处理涉及负数的取模运算,确保程序的正确性和健壮性。
摘要由CSDN通过智能技术生成