238 找出所有等价(equivalent)的表达式

来源:互联网 发布:联通宽带用广电网络 编辑:程序博客网 时间:2024/06/03 21:41
38.今晚 10.11大华笔试题:建立一个data structure表示没有括号的表达式,而且找出所有等价(equivalent)的表达式 比如:
3*5 == 5*3 
2+3 == 3+2


字符串处理 分三段 
#include<iostream>#include<stdio.h>using namespace std;int main(){char str1[10],str2[10],s[3],oper1,oper2;int numA,numB,i,len;double ans1,ans2;while(scanf("%s",str1)){i=0;//左边 len=strlen(str1);numA=0;numB=0;while(str1[i]<='9'&&str1[i]>='0'){numA=numA*10+str1[i]-'0';i++;} oper1=str1[i++];while(str1[i]<='9'&&str1[i]>='0'&&i<len){numB=numB*10+str1[i]-'0';i++;}switch (oper1){case '+': ans1=numA+numB;break;case '-': ans1=numA-numB;break;case '*': ans1=numA*numB;break;case '/': ans1=numA/numB;break;//没有判断除数为0的情况 }scanf("%s",s);//获取==//右边 scanf("%s",str2); i=0;len=strlen(str2);numA=0;numB=0;while(str2[i]<='9'&&str2[i]>='0'){numA=numA*10+str2[i]-'0';i++;} oper2=str2[i++];while(str2[i]<='9'&&str2[i]>='0'&&i<len){numB=numB*10+str2[i]-'0';i++;}switch (oper2){case '+': ans2=numA+numB;break;case '-': ans2=numA-numB;break;case '*': ans2=numA*numB;break;case '/': ans2=numA/numB;break;//没有判断除数为0的情况 }if(ans1==ans2)printf("YES,%s == %s\n",str1,str2);elseprintf("NO,%s != %s\n",str1,str2);}}

0 0
原创粉丝点击