📄 zhuhanshu.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#include"yuanwenjian.h"
int main()
{
int a[1000],f=1,i,x,w;
char c;
dastack.base1=(int *)malloc(STACK_SIZE * LEN1); //构造运算数栈
if(! dastack.base1) printf("error\n");
dastack.top1=dastack.base1;
dastack.stacksize1=STACKINCREMENT;
sgstack.base2=(char *)malloc(STACK_SIZE * LEN2); //构造运算符栈
if(! sgstack.base2) printf("error\n");
sgstack.top2=sgstack.base2;
sgstack.stacksize2=STACKINCREMENT;
printf(" 输入要求:\n 在输入的表达式的结尾要输入“=”作为表达式的结束符!!\n");
i=0;
* (sgstack.top2++)='=';
c=getchar();
while(c !='\n'){
if(c>='0' && c<='9'){
a[i]= c - '0'; //将字符转换为整数
i++;
}
else if(c=='+' || c=='-' || c=='*' || c=='/' || c=='(' || c==')' || c=='='){
if(i !=0){
* (dastack.top1 ++)=account(a,i-1);
i=0;
}
w=compsig(* ( sgstack.top2 -1),c );
while(w == 1 ){
if(dastack.top1 == dastack.base1+1) {//与一个运算符匹配的运算数只有一个,没有构成正确的运算表达式
f=0;
printf("输入的表达式错误!\n");
return 0;
}
if(f != 0){
x=operate( * (-- dastack.top1),* (-- sgstack.top2),* (-- dastack.top1) );
* (dastack.top1 ++)=x;
w=compsig(* (sgstack.top2 - 1),c );
}
}
if(w == -1)
*(sgstack.top2 ++)=c;
else if(w == 0){
if(c !='='){
sgstack.top2=sgstack.top2 - 1;
}
else{
if(! dastack.base1){
f=0;
printf("这不是一个正确的表达式,请重新输入\n");
sgstack.top2=sgstack.base2;
}
}
}
else if(w == 2){
f=0;
printf("表达式出错,请重新输入\n");
return 0;
}
}
else {
printf(" 输入的字符非法!\n");
f=0;
return 0;
}
c=getchar();
}
if(f==1) //如果输入正确表达式得出结果则输出运算结果
printf("运算结果为%d\n",*(dastack.base1));
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -