3,5,17WA

P1553 数字反转(升级版)

``` ```
by 项小羽 @ 2018-11-27 22:54:37


#include<stdio.h> unsigned long long ato(const char *p) { unsigned long long x=0; for(int i=0;*(p+i);i++) x=10*x+(*(p+i)-'0'); return x; } void op0(char *p) { int len; for(len=0;*(p+len);len++); for(int i=0,j=len-1;i<j;i++,j--) { char t=*(p+i); *(p+i)=*(p+j); *(p+j)=t; } unsigned long long x=ato(p); printf("%llu",x); } void op1(char *p) { char b[25]; int i; for(i=0;*(p+i)!='%';i++) b[i]=*(p+i); b[i]='\0'; op0(b); printf("%%"); } void op2(char *p) { int i; char a[11],b[11]; for(i=0;*(p+i)!='/';i++) a[i]=*(p+i); a[i]='\0'; int j; for(j=i+1;*(p+j);j++) b[j-i-1]=*(p+j); b[j]='\0'; op0(a); printf("/"); op0(b); } void op3(char *p) { int i; char a[11],b[11]; for(i=0;*(p+i)!='.';i++) a[i]=*(p+i); a[i]='\0'; int j; for(j=i+1;*(p+j);j++) b[j-i-1]=*(p+j); b[j]='\0'; op0(a); printf("."); unsigned long long x=ato(b); int c[11]; if(x==0) printf("0"); else { //while(x%10==0)x/=10; int i=0; while(x) { c[i]=x%10; x/=10; i++; } for(int n=0;n<i;n++) printf("%d",c[n]); } } int main() { char a[25]; gets(a); int flag=0; for(int i=0;a[i];i++) { if(a[i]=='%') flag=1; else if(a[i]=='/') flag=2; else if(a[i]=='.') flag=3; } switch(flag) { case 0:op0(a);break; case 1:op1(a);break; case 2:op2(a);break; case 3:op3(a);break; } return 0; } 整理好了
by 项小羽 @ 2018-11-27 22:56:15


@[项小羽](/space/show?uid=156119) 你op1中`printf("%%")`是什么鬼??
by 大略 @ 2018-11-27 23:07:42


哦,我看错了,就当我没说
by 大略 @ 2018-11-27 23:09:36


@[项小羽](/space/show?uid=156119) 这道题有很多细节需要考虑,~~我错了五六遍~~
by resftlmuttmotw @ 2018-11-27 23:13:20


@[resftlmuttmotw](/space/show?uid=73992) 我可能是不太了解全部的规则,全对的能教我哪里需要重点注意吗?
by 项小羽 @ 2018-11-28 07:42:07


|