一位数四则运算

来源:互联网 发布:软件验收报告范本 编辑:程序博客网 时间:2024/06/05 19:25
//对一个只含有同级运算符的数字字符串进行计算(仅限个位数的)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;}