通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:
1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。
要求实现函数:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
【输出】 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; }