HDU 2054

题目要求:

比较两个数是否相等

做题思路:

刚开始没多想直接试了一下简单的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");
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容