//对一个只含有同级运算符的数字字符串进行计算(仅限个位数的)
int calc(char *s)
{
int sum=0;
sum=(int)(*s)-48;
while(*s)
{
if(*(s+1)=='*') {sum=sum*((int)(*(s+2))-48);}
if(*(s+1)=='/') {sum=sum/((int)(*(s+2))-48);}
if(*(s+1)=='+') {sum=sum+((int)(*(s+2))-48);}
if(*(s+1)=='-') {sum=sum-((int)(*(s+2))-48);}
s=s+1;
}
return sum;
}
//***************************************************************************************************************************************
//输入一个算式,计算出结果(仅限个位数)
int calc(char *);
int main()
{
char s[100]="abcd";
char tem[100][100];
char ch[100];
char *p=s;
int i=0,j=0,word=0,flag=0,k=0;
int re=0;
cout<<"Input a string"<<endl;
gets(s);
while(s[i])//由于内部 的两个while 语句的条件包含了所有的情况,并且都会自增,所以这里本身不需要考虑外循环的自增
{
while((((s[i])=='+')||((s[i]=='-')))&&p[i])//到达空格的时候,连续移动到非空格字符
{
flag=0;ch[k++]=s[i];
i++;
}
while(((p[i])!='+')&&((p[i])!='-')&&p[i])//开始单词的判断,记得加上p[i]非空的条件哟
{
tem[word][j++]=p[i++];
flag=1;
}
tem[word][j]='\0'; //一个单词结束,附上结束符
j=0; //另起一行开始赋值
if(flag==1) word++;//flag=1时,说明刚刚进行了单词的判断,从而word 数增加。一定要增加这个条件,否则,word 就是外循环的次数
}
ch[k]='\0';
cout<<"There are "<<word<<"words"<<endl;
re=calc(tem[0]);
for(i=1;i<word;i++)
{
cout<<tem[i]<<endl;
if(ch[i-1]=='+')re+=calc(tem[i]);
if(ch[i-1]=='-')re-=calc(tem[i]);
cout<<calc(tem[i])<<endl;
}
cout<<"ch="<<ch<<endl;
cout<<"re="<<re<<endl;
return 0;
}
一位数四则运算
最新推荐文章于 2021-05-23 07:48:32 发布