試用C語言設計程式,程式的功能是接收任意輸入算術表示式,判斷表示式中的括號是否配對出現

2022-03-06 17:58:45 字數 6672 閱讀 1266

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,結...