//后来自己加上了判断是否开头有零,又犯了几个错误......字符外没加单引号,for循环第三个空内用的是&&
#include<stdio.h>
#include<string.h>
#define maxn 100000//长的字符数组定义方式!就因为这里一直不能运行
char a[maxn], b[maxn];<pre name="code" class="objc">#include<stdio.h>
#include<string.h>
#define maxn 100000
char a[maxn], b[maxn],a2[maxn],b2[maxn];
int main()
{
int la, lb, max, i, j,marka, markb, count;
memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b));
while (scanf("%s%s", a, b) != EOF)
{
memset(a2, 0, sizeof(a2)); memset(b2, 0, sizeof(b2));
la = strlen(a);lb = strlen(b);
marka = markb = 0;
//1.前导零去掉,数组前移并储存在新数组a2里
for(i=0;i<la;i++){if(a[i]!='0') {marka=i;break;} }//0是字符...所以不可以直接用if(a[i]!=0)来判断好么!!
for(i=0,j=marka;i<la-marka&&j<la;i++,j++){ a2[i]=a[j];}
for(i=0;i<lb;i++){if(b[i]!='0') {markb=i;break;} }
for(i=0,j=markb;i<lb-markb&&j<lb;i++,j++){ b2[i]=b[j];}
//2.没点的加点
marka=0;markb=0;
la=strlen(a2);lb=strlen(b2);
for (i = 0; i < la; i++){ if (a2[i] == '.'){ marka = i; break; } }
for (i = 0; i < lb; i++){ if (b2[i] == '.'){ markb = i; break; } }
if (marka == 0)a2[la] = '.';
if (markb == 0)b2[lb] = '.';
la = strlen(a2);lb = strlen(b2);
//2.用0补齐
max = la > lb ? la : lb;
for (i = la; i < max; i++) a2[i] = '0';
for (i = lb; i < max; i++) b2[i] = '0';
//3.逐个判断
if (!(strcmp(a2,b2))) printf("YES\n");
else printf("NO\n");
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(a, 0, sizeof(a2));
memset(b, 0, sizeof(b2));
}
return 0;
}