分析:水题,主要是要注意几个细节。
#include<iostream>
using namespace std;
char a[100005],A[100005];
char b[100005],B[100005];
void Process(char* p,int count,char* p2)
{
int pos;
bool is_real;
int i=0,k=0,j;
label:
while(*(p+i)!='\0' && *(p+i)=='0')
i++;
if(*(p+i)=='\0')
{
p2[0]='0',p2[1]='\0';
return ; //为0
}
if(*(p+i)=='-')
{
p2[k++]='-';
i++;
goto label;
}
if(*(p+i)=='+')
{
i++; //处理正数
goto label;
}
while(*(p+i)!='\0' && *(p+i)!='.') p2[k++]=p[i],i++;
if(*(p+i)=='\0')
{
p2[k]='\0';
return ;
}
is_real=false;
for(j=count-1;j>i;j--)
if(is_real || p[j]!='0')
{
if(!is_real) pos=j;
p2[k+j-i]=p[j];
is_real=true;
}
if(!is_real)
p2[k]='\0';
else
p2[k]='.',p2[k+pos-i+1]='\0';
}
bool IsEqual()
{
Process(a,strlen(a),A);
Process(b,strlen(b),B);
if(!strcmp(A,B)) return true;
else return false;
}
int main()
{
while(scanf("%s %s",a,b)==2)
{
if(IsEqual()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
原文地址:http://blog.csdn.net/a809146548/article/details/45622941