提交记录 #381
提交时间:2024-12-03 14:23:14
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
额外测试点#1:
H22【选做▪应用】逆波兰算术表达式
#include<stdio.h>
#include<string.h>
#include<math.h>
//void cal(int number[100],char signal[100]){
// int i=2*strlen(signal)-1,j,k=0;
// int result=0;
// int count=0;
// for (i,j=0;j<strlen(signal);i-=2,j++){
// if (signal[j]=='+'){
// result+=add(number[i],number[i-1]);
// }
// else if (signal[j]=='-'){
// result+=minus(number[i],number[i-1]);
// }
// else if (signal[j]=='*'){
// result+=multiply(number[i],number[i-1]);
// }
// else if (signal[j]=='/'){
// result+=divide(number[i],number[i-1]);
// }
// }
// printf("%d\n",result);
//
//
//}
int add(int a,int b){
return a+b;
}
int minus(int a,int b){
return a-b;
}
int multiply(int a,int b){
return a*b;
}
int divide(int a,int b){
return a/b;
}
int main(){
int number[100]={0};
//char signal[100]={'\0'};
char cc;
int i=0,j=0,num_single=0;
char single[20]={'\0'};
while (1){
cc=getchar();
if (cc>='0'&&cc<='9'){
single[j++]=cc;
num_single++;
}
else {
for (j=0;j<num_single;j++){
number[i]+=((int)single[j]-48)*pow(10,num_single-j-1);
single[j]='0';
}
if (num_single!=0){
i++;
}
j=0;
num_single=0;
if (cc!=' '&&cc!='\n'){
if (cc=='+'){
number[i-2]=add(number[i-2],number[i-1]);
number[i-1]=0;
i--;
}
else if (cc=='-'){
number[i-2]=minus(number[i-2],number[i-1]);
number[i-1]=0;
i--;
}
else if (cc=='*'){
number[i-2]=multiply(number[i-2],number[i-1]);
number[i-1]=0;
i--;
}
else if (cc=='/'){
number[i-2]=divide(number[i-2],number[i-1]);
number[i-1]=0;
i--;
}
}
else if (cc=='\n'){
break;
}
}
}
//cal(number,signal);
printf("%d\n",number[0]);
return 0;
}