题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054
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 2 2 2 3 3 4 3
Sample Output
NO YES YES NO
题目很水,但交了几次还是错了,一开始我以为是考察对考浮点数的判断,实际上是对字符串的处理,代码如下:#include<stdio.h> #include<string.h> #define N 1000000 char a[N],b[N]; void Trans(char *A,char *goal) { int i,j,len=strlen(A),pos,t,flag=0; for(i=0; A[i]=='0'&&i<len; i++);//忽略前导0 for(j=0; j<len; j++) if(A[j]=='.')flag=1; j=len-1; if(flag)//判读是否有小数点,如果有,忽略后面的0 for(; A[j]=='0'&&j>=0; j--); for(pos=i,t=0; pos<=j; pos++) goal[t++]=A[pos]; if(goal[t-1]=='.')t--;//如果结尾是'.'要去掉 goal[t]='\0'; } int main() { char A[N],B[N]; while(scanf("%s%s",A,B)!=EOF) { Trans(A,a); Trans(B,b); if(strcmp(a,b))printf("NO\n"); else printf("YES\n"); } return 0; }