每日一題 89 兩個字串進行加減

2021-06-18 06:09:37 字數 1647 閱讀 3374

題目來自網路

題目描述

通過鍵盤輸入100以內正整數的加、減表示式,請編寫乙個程式輸出運算結果字串。

輸入字串的格式為:「運算元1 運算子 運算元2」,「運算元」與「運算子」之間以乙個空格隔開。

補充說明:

1. 運算元為正整數,不需要考慮計算結果溢位的情況。

2. 若輸入算式格式錯誤,輸出結果為「0」。

要求實現函式: 

void arithmetic(const char *pinputstr, long linputlen, char *poutputstr);

【輸入】 pinputstr: 輸入字串,

linputlen: 輸入字串長度 

【輸出】 poutputstr: 輸出字串,空間已經開闢好,與輸入字串等長;

【注意】只需要完成該函式功能演算法,中間不需要有任何io的輸入輸出

舉例:輸入:「4 + 7」 輸出:「11」

輸入:「4 - 7」 輸出:「-3」

輸入:「9 ++ 7」 輸出:「0」 注:格式錯誤

**:#include using namespace std;

void arithmetic(const char *pinputstr, long linputlen, char *poutputstr)

else

}//檢測左運算元是否非法

if (nleftnum >= 100 || nleftnum <= 0)

//取運算子

ncur++;

if (pinputstr[ncur] == '-')

else if (pinputstr[ncur] == '+')

else

//檢測運算子後第乙個空格

ncur ++;

if (pinputstr[ncur] == ' ')

else

//取右運算元

while(pinputstr[ncur] != '\0')

else

}//檢測左運算元是否非法

if (nrightnum >= 100 || nrightnum <= 0)

//兩數進行操作

if (bflag)//減法

else

//把結果變成字串

int ncount = 0;

int nleft = 0;

int nright = 0;

char ctmp = 0;

bool bispos = true;

if (nresult == 0)

else if (nresult < 0)

while(nresult)

//翻轉

if (bispos)

else

nright = ncount - 1;

while(nright > nleft)

poutputstr[ncount] = '\0';

}int main()

{ char inputstr[10];

char outputstr[10];

cin.getline(inputstr,10);

arithmetic(inputstr,strlen(inputstr),outputstr);

cout<**好醜陋,哎...

連線兩個字串

include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...

交換兩個字串

交換兩個字串,原來的字串分別為 學生 和 好 字串輸出顯示為 學生好 交換後輸出顯示為 好學生 include using namespace std int main char c1 5 學生 char c2 3 好 char m,n,t m c1 n c2 cout 交換前 m n n t co...

兩個字串相乘

先附上一張演算法圖 解釋 123 456 首先拿出1和456相乘,儲存到陣列1 2 3 的位置,然後拿出2和456相乘2 3 4的位置,依次類推,直到第乙個字串遍歷完 然後將他們相加,依次存到陣列中 實現如下 int j 0 int resindex 0 for int i 0 i然後再考慮進製,需...