社区讨论
85分!求助!
P1553数字反转(升级版)参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi4g9urb
- 此快照首次捕获于
- 2025/11/18 18:48 4 个月前
- 此快照最后确认于
- 2025/11/18 18:48 4 个月前
CPP
#include<stdio.h>
#include<string.h>
char a[30];
int len;
void swap(char *p1,char *p2)
{
if(p1>=p2) return;
else if(*p2=='%') p2--;
char temp;
while(1)
{
temp=*p1;*p1=*p2,*p2=temp;
p1++;p2--;
if(p1>=p2) break;
}
}
int main()
{
int fu=0;//0为正数,1为负数
scanf("%s",a);
if(a[0]=='-')
{
fu=1;
printf("-");
}
char *p1,*p2;
if(fu==0) p1=&a[0];
else p1=&a[1];//p1指向非符号位第一个
len=strlen(p1);
if(len==1&&*p1=='0')
{
printf("0\n");
return 0;
}
p2=strchr(p1,'.');
if(p2==NULL)
{
p2=strchr(p1,'/');
if(p2==NULL)
p2=p1+len-1;
}//若为小数或分数,p2指向符号;若为正数或百分数,p2指向数组最后一个元素
CPP if(p2==p1+len-1)
{
swap(p1,p2);
for(;p1<=p2;p1++)
if(*p1!='0') break;
for(;p1<=p2;p1++) printf("%c",*p1);
}
else
{
swap(p1,p2-1);
swap(p2+1,p1+len-1);
char *begin,*end;begin=p1,end=p1+len-1;
while(1)
if((*begin!='0')||begin==p2-1)
break;
else begin++;
while(1)
if((*end!='0')||end==p2+1)
break;
else end--;
for(;begin<=end;begin++)
printf("%c",*begin);
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...