```
```
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