1樓:
//最近的棧作業~
#include
using namespace std;
class stack
~stack()
void clear() //清空棧
bool push(const int value) //壓入
else if(c==')'||c==']'||c=='}')formula.pop(temp);
if(temp==c-1||temp==c-2);
else
}c=s[++i];
}if(!formula.isempty())flag=0;
if(flag2)
cout<<"無括號\n";
else if(flag)
cout<<"括號配對正確\n";
else
cout<<"括號配對錯誤\n";
}int main()
2樓:匿名使用者
char stack[1024];
int sptr=0;
int push(char ch)
int pop()else
}int isleft(char c)
int ispair(char left,char right)int main()else
if(!ispair(c,tmp[i]))}}if(sptr==0)else
return 0;}
3樓:匿名使用者
演算法如下(直接抄書):
做一個空棧。讀入字元直至檔案尾。如果字元是一個開放符號(左括號),則將其壓入棧中。
如果字元是一個封閉符號(右括號),那麼若棧為空,則報錯;棧不為空,則將棧元素彈出。如果彈出的符號表示對應的左括號,則報錯。讀完最後一個字元,如果棧非空則報錯。
參考**:
一道c語言題目:編寫程式檢查輸入的算術表示式中括號是否配對,並顯示出結果。
4樓:匿名使用者
if(c=='(') l++;
else if(c==')') r++;
if(l==r) printf("yes");
else printf("no");
c語言程式設計 鍵盤輸入一個含有括號的四則運算表示式,實現功能如下:①輸出字尾表示式—即逆波蘭;②將
5樓:匿名使用者
#include
#include
#include
#define maxsize 50
void trans(char str,char exp)/*將算術表示式str轉換成字尾表示式exp*/
opr; /*定義運算子棧*/
char ch;
int i=0,t=0; /*t作為exp的下標,i作為str的下標*/
opr.top=-1; /*初始化設定top的值為負一*/
ch=str[i];i++; /*逐個讀取字串中的字元*/
while (ch!='\0') /*str表示式未掃描完時迴圈*/
opr.top--; /*將左括號刪除*/
break;
case '+': /*判定為加號或減號*/
case '-':
opr.top++;opr.data[opr.top]=ch; /*將ch存入棧opr中*/
break;
case '*':
case '/':
while (opr.data[opr.top]=='*'||opr.data[opr.top]=='/'||opr.data[opr.top]=='^')
opr.top++;opr.data[opr.top]=ch; /*將ch存入棧opr中*/
break;
case '^': /*判定為乘方號*/
while (opr.data[opr.top]=='^')
opr.top++;opr.data[opr.top]=ch; /*將ch存入棧opr中*/
break;
case ' ': break; /*過濾掉空格*/
default:
while(ch>='0'&& ch<='9'||ch=='.') /*判定為數字*/
i--;
exp[t]='#';t++; /*用#標示一個數值串結束*/
}ch=str[i];i++;
}while (opr.top!=-1) /*此時str掃描完畢,棧不空時迴圈*/
exp[t]='\0'; /*給exp表示式新增結束標示*/
}float compvalue(char exp) /*計算字尾表示式的值*/
st; /*定義數值棧*/
float d,d2;double po;
char ch;
int t=0,flag=1,i,count; /*t作為exp的下標*/
st.top=-1;
ch=exp[t];t++;
while (ch!='\0') /*exp字串為掃描完時迴圈*/
st.top--;break;
case '^':
po=pow(st.data[st.top-1],st.
data[st.top]); st.data[st.
top-1]=(float)po;/*呼叫pow子函式進行乘方運算*/
st.top--;break;
default:
d=0; flag=1; d2=0; /*將數字字元轉換成對應的數值存放到d中*/
while(ch>='0'&&ch<='9'&&flag) /*判定為數字字元*/
if(flag==0)
for(i=1;i<=count;i++)
d2=0.1*d2;
}d+=d2;
st.top++;
st.data[st.top]=d;
}ch=exp[t];t++;
}return st.data[st.top];
}int main()
c語言設計 ( 1) 設計一個程式來模擬一個簡單的手持計算器。程式支援算術運算+、-、*、/、=、以及c(清除)
6樓:匿名使用者
c語言實訓 1
一、 課題名稱:簡單計算器
設計一個簡單的程式來模擬計算器的功能。
二、 設計目的:
1、 通過理論知識與實際需求相結合,編輯解決一些日常中的實際問題,培養初步的獨立分析和設計能力。
2、 瞭解應用程式設計解決實際問題的具體過程和實現方法,掌握應用c語言進行程式設計的基本規範;
3、 重點掌握c語言的程式編寫、函式設計、演算法設計和程式除錯方法;
4、 初步掌握系統開發過程的問題分析、系統設計、程式編碼、測試等基本方法和技能。
三、 設計任務:
1、 記錄輸入的每一數字或運算子號的(包括1、2、3等數字,+、-、*、/、%等運算子號)。輸入一個算術計算式,就在螢幕上顯示算術計算式、結果;執行一次計算後,判斷是否還要繼續計算,如需繼續,則不退出繼續執行,如不需繼續則結束程式。
2、 輸入簡單的加減乘除算術計算式,並在螢幕上顯示計算結果;
3、 顯示介面友好,要求有相應的輸入輸出提示
例如:輸入 15/3
要求顯示:15/3=5 判斷是否還要繼續
7樓:厚鴻騫
首先你輸入的表示式是一個字串,應該放在陣列裡,然後你得用程式來解析這個字串轉化為四則運算,加減乘除括號這些在一起的話你得考慮優先順序,自己多想想吧
8樓:匿名使用者
int cal(int a,char c, int b)
return 0;}
9樓:
做1個自定義函式 就行了
在c語言的if 語句中,用作判斷的表示式是( )a關係表示式 b邏輯表示式 c算術表示式 d任意表示式
10樓:匿名使用者
b if語句不是一種選擇結構,只是一條語句,它在演算法較簡單的場合下,可以靈活地完成二分叉選擇演算法。邏輯if語句判別邏輯表示式的值是否為「真」,並執行一操作。其一般形式為:
if(邏輯表示式) 執行語句。如果條件成立(即邏輯表示式值是『真』),則執行其後緊跟的執行語句,而後執行下一條語句;如果條件不成立,則整個if語句不作任何操作,只是起下滑作用,使控制轉移到if語句的下一個語句。
邏輯if語句當條件為「真」時只能執行一個執行語句而不能執行若干個語句。與塊if相比,邏輯if語句是在一行中完成的一個選擇操作,因此它又稱「行if語句」以與塊if區別。之所以用邏輯if語句名稱,是沿用了fortrn66的定義,因為在f66中有兩種if語句:
算術if語句(f90/95中已廢除)和邏輯if語句。
11樓:匿名使用者
應該都可以吧。不是很確定
在c語言的if 語句中,用作判斷的表示式是( )a關係表示式 b邏輯表示式 c算術表示式 d任意表示式
12樓:匿名使用者
d任意表示式。
c語言提供了兩種形式的if語句:
1、if(表示式)語句;
2、if(表示式)語句1 else 語句2。
這個表示式可以是任意表示式,如果表示式為 true,則 if 語句內的**塊將被執行。如果表示式為 false,則 if 語句結束後的第一組**(閉括號後)將被執行。
c 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false。
所以既可以是關係表示式、邏輯表示式 ,也可是算術表示式,甚至是一個變數、常量等。
13樓:黃榮大俠
任意表示式,只要()裡的是非零就要執行if()語句;是零就不執行.
關係表示式成立是1,不成立是0;邏輯表示式成立是1,不成立是0;算術表示式的值是非0就是執行,0就不執行.
14樓:匿名使用者
選擇d;
因為:在c中if語句是可以用算術表示式的,例如:a!=c;
在c中if語句是可以用邏輯表示式,例如:a==0||b==0;
關係表示式,要麼真要麼假(1,0),也作為判斷該if語句是否成立,所有是a,b,c都是的,因為答案為d任意表示式!!!
求用c語言編寫一個算術表示式的演算法,如輸入3*4+8-2鍵入enter鍵輸出18.
15樓:匿名使用者
#include
//#define maxlen 100//儲存空間
int tran(char str, char expr) //將中綴表示式轉換成字尾表示式 if(tran(str,expr)==0)//原來表示式,字尾表示式
i--; //str原算術表示式棧向下遍歷
expr[exindex]='#'; //以特殊字元「#」表示結束
exindex++;
}else if(ch=='(') //判斷為左括號
else if(ch==')') //判斷為右括號
stindex--;//'('出棧
}else if(ch=='+' || ch=='-')//判斷為加減號
stindex++;
st[stindex]=ch;
}else if (ch=='*' || ch=='/')//判斷為乘除號
stindex++;
st[stindex]=ch; }}
while (stindex>=0)//將棧中所有運算子依次彈出存入expr棧中
expr[exindex]='\0';
return 1;
}int compvalue(char expr,int *n)
while((ch=expr[exindex++])!='#');
stindex++;
st[stindex]=d;//數字進棧
}else//運算子操作
else return 0; //除0錯誤!
break;
}stindex--;}}
(*n)=st[stindex];
return 1;
}void main()
{char str[100]; //儲存原來算術表示式
char expr[100]; //儲存轉換成的字尾表示式
int n;
cout<<"輸入算術表示式:"<>str;
if(tran(str,expr)==0)
{cout<<"原算術表示式不正確!"<
隊會的設計程式
1 整隊 報告人數。2 宣佈主題中隊會開始。隊長向輔導員報告結束後,便面向全體隊員宣佈 主題中隊會現在開始!3 出旗 敬禮。鼓號齊奏,全體隊員向隊旗敬禮,隊旗出場 4 唱隊歌。伴奏或錄音伴奏,隊歌要唱完整 5 中隊長講話。說明隊會主要內容 意義 6 宣佈活動開始,進行活動。即事先確定的隊會內容 7 ...
c語言小程式的問題,c語言程式問題
注意標記符號所作用的程式域!其他的都是一些小問題,自己慢慢除錯這執行,相信你能執行成功的。c語言程式問題 c語言中只有傳遞值的一種方式,即使傳遞的是指標,還是指標的值,因此雖然p加了3,但是與pt無關,如果要修改指標形參,則要使用二重指標 include point char pt main pt ...
C語言設計程式 從鍵盤輸入三角形的三邊長為a,b,c,請用海
兩者計算是不同的。s 1 2 a b c 按c語言的運算規則,先算括號,a b c,結果為float型 然後由於 和 同級,因此從左到右計算。先計算1 2 1 2都是整型,整型計算,結果仍為整型,1 2 0,因此,不管後面a b c的值為何,s的值都是0 而對於s a b c 2,先算a b c,結...