通過鍵盤輸入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 <iostream> #include <string> #include <vector> using namespace std; /* 通過鍵盤輸入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” 注:格式錯誤 */ void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr) { int i; int n; n=0; for(i=0;pInputStr[i]!=' ';i++) { if(pInputStr[i]=='\0'||isdigit(pInputStr[i])==0) { pOutputStr[0]='0'; pOutputStr[1]='\0'; return; } else { n=n*10+pInputStr[i]-'0'; } } if(i==0) { pOutputStr[0]='0'; pOutputStr[1]='\0'; return; } char q; i++; if(pInputStr[i]!='+'&&pInputStr[i]!='-') { pOutputStr[0]='0'; pOutputStr[1]='\0'; return; } else { q=pInputStr[i]; } i++; if(pInputStr[i]!=' ') { pOutputStr[0]='0'; pOutputStr[1]='\0'; return; } i++; int k; k=0; for(;pInputStr[i]!='\0';i++) { if(isdigit(pInputStr[i])==0) { pOutputStr[0]='0'; pOutputStr[1]='\0'; return; } else { k=k*10+pInputStr[i]-'0'; } } int r; r=(q=='+')?(n+k):(n-k); i=0; if(r<0) { pOutputStr[i++]='-'; r=-r; } int p[3]; p[0]=r/100; p[1]=(r%100)/10; p[2]=(r%100)%10; if(p[0]==0&&p[1]==0) pOutputStr[i++]=p[2]+'0'; else if(p[0]==0) { pOutputStr[i++]=p[1]+'0'; pOutputStr[i++]=p[2]+'0'; } else { pOutputStr[i++]=p[0]+'0'; pOutputStr[i++]=p[1]+'0'; pOutputStr[i++]=p[2]+'0'; } pOutputStr[i]='\0'; } int main(void) { char* pInputStr=new char[10]; char* pOutputStr=new char[10]; int i; for(i=0;i<100;i++) { int j=rand()%100; int p=rand()%100; int q=rand()%2; pInputStr[0]='0'+j/10; pInputStr[1]='0'+j%10; pInputStr[2]=' '; pInputStr[3]=((q>0)?'+':'-'); pInputStr[4]=' '; pInputStr[5]='0'+p/10; pInputStr[6]='0'+p%10; pInputStr[7]='\0'; cout<<pInputStr<<endl; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; } pInputStr="4 + 7"; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; pInputStr="4 - 7"; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; pInputStr="9 ++ 7"; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; pInputStr="100 +100"; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; pInputStr="100 + 100 "; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; pInputStr=" 100 + 100"; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; pInputStr="1*0 + 100"; arithmetic(pInputStr,10,pOutputStr); cout<<pOutputStr<<endl; system("pause"); return 0; }