甘肃网站建设方案及案例,在国外网站上买机票怎样做财务,网络网站开发培训,wordpress插件问题C程序设计语言 #xff08;第二版#xff09; 练习 4-3
练习 4-3 在有了基本框架后#xff0c;对计算器程序进行扩充就比较简单了。在该程序中加入取模(%)运算符#xff0c;并注意考虑负数的情况。
注意#xff1a;代码在win32控制台运行#xff0c;在不同的IDE环境下第二版 练习 4-3
练习 4-3 在有了基本框架后对计算器程序进行扩充就比较简单了。在该程序中加入取模(%)运算符并注意考虑负数的情况。
注意代码在win32控制台运行在不同的IDE环境下有部分可能需要变更。
IDE工具Visual Studio 2010 代码块
#include stdio.h
#include stdlib.h
#include ctype.h
#include string.h#define MAXOP 100
#define NUMBER 0
#define MAXVAL 100
#define BUFSIZE 100int sp 0;
double val[MAXVAL];char buf[BUFSIZE];
int bufp 0;void push(double f){if(sp MAXVAL){val[sp] f;}else{printf(Error! Stack Full, cant push %g\n, f);}
}double pop(void){if(sp 0){return val[--sp];}else{printf(Error! Stack Empty!\n);return 0.0;}
}int getch(void){return (bufp 0) ? buf[--bufp] : getchar();
}void ungetch(int c){if(bufp BUFSIZE){printf(Ungetch! Too many characters!\n);}else{buf[bufp] c;}
}int getop(char s[]){int i, c;while((s[0] c getch()) || c \t);s[1] \0;if(c -){int next getch();if(!isdigit(next) next ! .){ungetch(next);return c;}s[1] c next;i 1;}else{i 0;if(!isdigit(c) c ! .){return c;}}if(isdigit(c)){while(isdigit(s[i] c getch()));}if(c .){while(isdigit(s[i] c getch()));}s[i] \0;if(c ! EOF){ungetch(c);}return NUMBER;
}int main(){int type;double op2;char s[MAXOP];while((type getop(s)) ! EOF){switch(type){case NUMBER:push(atof(s));break;case :push(pop() pop());break;case *:push(pop() * pop());break;case -:op2 pop();push(pop() - op2);break;case /:op2 pop();if(op2 ! 0.0){push(pop() / op2);}else{printf(Error! Zero Divisor!\n);}break;case %:op2 pop();push((int)pop() % (int)op2);break;case \n:printf(\t%.8g\n, pop());break;default:printf(Error! Unknown Command %s\n, s);break;}}system(pause);return 0;
}