题目要求:
比较两个数是否相等
做题思路:
刚开始没多想直接试了一下简单的strcmp,后来看来讨论才发现要考虑的因素有很多:
特殊情况:
输入数据是1.000和0001这种情况,甚至0001.000
这时候需要将多余的0去掉,通过判断是整数还是小数,整数只需去掉前面的0,小数两边的0都要去掉。
数据调试案例:
0123 123(去掉前面的0)
00123.100 123.1(去掉两边的0)
123.000 123(去掉两边的0和小数点)
#include<stdio.h>
#include<string.h>
#define N 100000
/* 判断是否小数*/
int isfloat(char x[])
{
int i;
for(i=0;i<strlen(x);i++)
if(x[i]=='.')
return 1;
return 0;
}
/* 对输入的字符串进行转变 */
void turn(char x[])
{
int i,k;
char *p;
p=x;
/* 去掉前面的0 */
while (*p == '0')
p++;
k=0;
/* 重新赋值 */
for(i=0;p[i]!='\0';i++)
x[k++]=p[i];
x[k]='\0';
/* 判断是否小数 */
if(!isfloat(x))
return;
/* 从后面去0 */
p=x+k-1;
while(*p=='0')
p--;
*(p+1)='\0';
/* 去掉小数点*/
if(*p=='.')
*p='\0';
}
int main()
{
char a[N],b[N];
while (scanf("%s%s",a,b) != EOF)
{
turn(a);
turn(b);
if(!strcmp(a,b))
printf("YES\n");
else
printf("NO\n");
}
}