Problem Description
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".
Input
each test case contains two numbers A and B.
Output
for each case, if A is equal to B, you should print "YES", or print "NO".
Sample Input
1 22 23 34 3
Sample Output
NOYESYESNO
费了半天的劲找到的一个例子:0.0 0 只要这个例子输出YES你的代码应该就没问题了。
主要是能好好控制 删去小数点后面的0及小数点然后再比较就行了。一开始WA了以后我看评论区,乱七八糟各种情况都想了,拜托不要想那么多好吗,没有+ -号,也不会出现这种前导0的情况 002 2 正常人会这么写吗啊?啊?啊?我竟然傻傻地去考虑了前导0的情况。。。。。
这道题用字符串比较挺方便的,方法一:
#include<string.h>
#include<stdio.h>
#define N 100000
char a[N],b[N];
int main()
{
int len1,len2;
while(scanf("%s%s",a,b)!=EOF)
{
int flag1=0,flag2=0;
len1=strlen(a);
len2=strlen(b);
int i;
for(i=0; i<len1; i++)
if(a[i]=='.')
flag1=1;
for(i=0; i<len2; i++)
if(b[i]=='.')
flag2=1;
if(flag1==1)
{
while(a[len1-1]=='0')
{
a[len1-1]='\0';
len1--;
}
if(a[len1-1]=='.')
a[len1-1]='\0';
}
if(flag2==1)
{
while(b[len2-1]=='0')
{
b[len2-1]='\0';
len2--;
}
if(b[len2-1]=='.')
b[len2-1]='\0';
}
if(strcmp(a,b)==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
方法二:(比较复杂)
#include<stdio.h>
#include<string.h>
#define N 100000
char a[N],b[N];
int s1[N],s11[N],s2[N],s22[N];
int main()
{
int len1,len2,i,j,m1,m2;
int flag1,flag2,f1,f2;
while(scanf("%s%s",a,b)!=EOF)
{
flag1=0;
flag2=0;
f1=0;
f2=0;
memset(s1,0,sizeof(s1));
memset(s11,0,sizeof(s11));
memset(s2,0,sizeof(s2));
memset(s22,0,sizeof(s22));
m1=len1=strlen(a);
m2=len2=strlen(b);
for(i=0; i<len1; i++)
if(a[i]=='.')
{
m1=i;
f1=1;
}
for(i=0; i<len2; i++)
if(b[i]=='.')
{
m2=i;
f2=1;
}
for(i=0,j=m1-1; i<m1;i++,j--)
s1[i]=a[j]-'0';
for(i=m1+1,j=0; i<len1; i++,j++)
s11[j]=a[i]-'0';
for(i=0,j=m2-1; i<m2; i++,j--)
s2[i]=b[j]-'0';
for(i=m2+1,j=0; i<len2; i++,j++)
s22[j]=b[i]-'0';
if(f1==1)
{
while(s11[len1-2-m1]==0)
{
if(s11[len1-2-m1]==0)
len1--;
}
len1++; //这里++是因为比如例子0.0 0,0.0小数点后的0消除了之后,这个数字没有小数了//
} //而我下面的判断是整数部分和小数部分相比较,所以我再添一个小数,下面同//
if(f2==1)
{
while(s22[len2-2-m2]==0)
{
if(s22[len2-2-m2]==0)
len2--;
}
len2++;
}
for(i=0;i<m1;i++)
if(s1[i]!=s2[i])
flag1=1;
for(i=0;i<len1-m1-1;i++)
if(s11[i]!=s22[i])
flag2=1;
if(flag1==0&&flag2==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}