计算100以内的加减法,输入为算式的字符串形式,操作数 运算符 操作数 ,如”3 + 4“,数字和运算符中间有一个空格。输出:如果格式正确,则输出计算结果,如果格式错误,则输出0。
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
char *p=new char[100];
char *resstr=new char[100];
gets(p);
char *p1=p,c;
bool err=false;
int temp=0,num=0,res,flag1=0,flag2=0;
int nc[2]={0};
if(strlen(p)<5)
{cout<<"error"<<endl;return 0;}
while(*p1!='\0')
{
if(*p1==' ')
{
if(flag1==2)
{err=true;
break;
}
if(*(p1+1)=='+'||*(p1+1)=='-')
flag1++;
else if((*(p1+1)-'0')<=9 && (*(p1+1)-'0')>=0)
flag1++;
else
{err=true;
break;
}
}
else if((*p1=='+'||*p1=='-'))
{
if(flag2==1)
{err=true;
break;}
if(*(p1+1)==' '&&*(p1-1)==' ')
{
nc[flag2]=temp;
flag2++;
c=*p1;
temp=0;
}
else
{err=true;
break;}
}
else if(((*p1-'0')<=9&&(*p1-'0')>=0))
{temp=temp*10+*p1-'0';}
else
{err=true;
break;}
p1++;
}
if((flag2!=1)||(flag1!=2))
{cout<<"error"<<endl;return 0;}
if(err)
{cout<<"error"<<endl;return 0;}
nc[flag2]=temp;
switch (c){
case '+':
res=nc[0]+nc[1];
break;
case '-':
res=nc[0]-nc[1];
break;
}
/* if(c=='+')
res=nc[0]+nc[1];
if(c=='-')
res=nc[0]-nc[1];
*/
sprintf(resstr,"%d",res);
cout<<resstr;
return 1;
}
1403

被折叠的 条评论
为什么被折叠?



