杭电2054 A==B ?(指针练习)

A == B ?

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 59168    Accepted Submission(s): 9127


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 maxn 100000+5  //数组一定要开到十万以上,否则会WA
void strip(char *s)
  {
      char *p;
    p=&s[0]+strlen(s)-1;//指针赋值要将 * 去掉,因为是将指针变量指向的一个地址 
    if(strchr(s,'.')!=NULL)//表示字符串 s 中'.'的地址,如果存在,可以令一个指针 *pp=strchr(s,'X');不存在则返回 NULL 
       while(*p=='0')
            *p--=0;//等价于*p--=NULL;
        if(*p=='.')
          *p=0;  
     
  }
int main()
{
    char *p;
    char *pa,*pb;
    char a[maxn],b[maxn];
    while(scanf("%s%s",a,b)!=EOF)
    {
      pa=a;pb=b;
      while(*pa=='0')//去掉前导0
        *pa++;
      while(*pb=='0')
        *pb++;
      strip(pa);
      strip(pb);
     // puts(pa);
     // puts(pb);
      printf(strcmp(pa,pb)==0? "YES\n":"NO\n");
    }
return 0;
}
//注:参考后边讨论区中代码。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值