通过键盘输入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;
}