日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编程求一个后缀表达式的值

發布時間:2024/4/30 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程求一个后缀表达式的值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】

從鍵盤讀入一個后綴表達式(字符串),只含有0-9組成的運算數及加(+)、減(-)、乘(*)、除(/)四種運算符。
每個運算數之間用一個空格隔開,不需要判斷給你的表達式是否合法。
以@作為結束標志。

【算法分析】

后綴表達式的處理過程很簡單,過程如下:
掃描后綴表達式,凡遇操作數則將之壓進堆棧,與運算符則從堆棧中彈出兩個操作數進行該運算,將運算結果壓棧,然后繼續掃描,直到后綴表達式被掃描完畢為止,此時棧底元素即為該后綴表達式的值。

代碼分析

#include <cstdio> #include <cstdlib> #include <string> #include <cstring> using namespace std; int stack[101]; char s[256]; int comp(char s[256]) {int i=0,top=0,x,y;while(i<=strlen(s)-2){switch(s[i]){case '+':stack[--top]+=stack[top+1];break;case '-':stack[--top]-=stack[top+1];break;case '*':stack[--top]*=stack[top+1];break;case '/':stack[--top]/=stack[top+1];break;default:x=0;while(s[i]!=' ')x=x*10+s[i++]-'0';stack[++top]=x;break;}i++;}return stack[top]; } int main () {printf("input a string (@_over):");gets(s);printf("result=%d",comp(s));return 0; }

例題

【例1】后綴表達式的值

時間限制: 10 ms 內存限制: 65536 KB
提交數: 6618 通過數: 992

【題目描述】

從鍵盤讀入一個后綴表達式(字符串),只含有0-9組成的運算數及加(+)、減(—)、乘(*)、除(/)四種運算符。
每個運算數之間用一個空格隔開,不需要判斷給你的表達式是否合法。
以@作為結束標志。
提示:輸入字符串長度小于250,參與運算的整數及結果之絕對值均在264范圍內,如有除法保證能整除。

【輸入】

一個后綴表達式。

【輸出】

一個后綴表達式的值。

【輸入樣例】

16 9 4 3 +*-@

【輸出樣例】

-47

【來源】

No

【代碼】

#include <stdio.h> #include <string.h> char a[10000]; long long stack[1000],top=-1; int main() {long long k=0,i=0,len,b,tag,d,e,f;char c;gets(a);len=strlen(a);while(i<len){b=0,tag=0;while(i<len&&'0'<=a[i]&&a[i]<='9')b*=10,b+=a[i]-'0',i++,tag=1;if(tag) top++,stack[top]=b;else if(a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/'){d=stack[top],top--;e=stack[top],top--;switch(a[i]){case '+':f=e+d;break;case '-':f=e-d;break;case '*':f=e*d;break;case '/':f=e/d;break;}top++;stack[top]=f;i++;}else i++;}printf("%lld",stack[top]);return 0; }

總結

以上是生活随笔為你收集整理的编程求一个后缀表达式的值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。