1、最简单的数字反转([0,n]的数据进行反转): n = strlen(a);
void reverse(char a[],int n)
{
for(int i=0;i<n/2;i++){
swap(&a[i],&a[n-i-1])
}
}
2
1、最简单的数字反转([0,n]的数据进行反转):
n = strlen(a);
void reverse(char a[],int n)
{
for(int i=0;i<n/2;i++){
swap(&a[i],&a[n-i-1])
}
}
2、指定范围的数字反转([l,r]的数据进行反转)
void reverse(char a[],int l,int r)
{
int m=(l+r)/2,k=0;
for(int i=l;i<m;i++){
swap(&a[i],&a[r+l-i-1]);
}
}
3、去掉前面的0的数字反转:比如230 --> 32
int reverse(char a[],int l,int r)
{
int m=(l+r)/2,k=0;
for(int i=l;i<m;i++){
swap(&a[i],&a[r+l-i-1]);
}
while(a[l+k]=='0')k++;
if(l+k==r) printf("0"); // 如果全是0,那结果就是0
else
for(int i=l+k;i<r;i++)
printf("%c",a[i]);
}
4、反转小数点后面的数,比如 0.012 --> 0.21
int reverse_small(char a[],int l,int r) // 反转小数点后的数字
{
int m=(l+r)/2,k=0;
for(int i=l;i<m;i++){
swap(&a[i],&a[r+l-i-1]);
}
while(a[r-k-1]=='0')k++;
if(r-k==l)printf("0");
else
for(int i=l;i<r-k;i++)
printf("%c",a[i]);
}
5、反转数据完整代码,比如:700/27 --> 7/72,230% --> 32%
#include <stdio.h>
#include <string.h>
void swap(char *a,char *b)
{
char c=*a;
*a=*b;
*b=c;
}
int reverse(char a[],int l,int r)
{
int m=(l+r)/2,k=0;
for(int i=l;i<m;i++){
swap(&a[i],&a[r+l-i-1]);
}
while(a[l+k]=='0')k++;
if(l+k==r)printf("0");
else
for(int i=l+k;i<r;i++)
printf("%c",a[i]);
}
int reverse_small(char a[],int l,int r) // 反转小数点后的数字
{
int m=(l+r)/2,k=0;
for(int i=l;i<m;i++){
swap(&a[i],&a[r+l-i-1]);
}
while(a[r-k-1]=='0')k++;
if(r-k==l)printf("0");
else
for(int i=l;i<r-k;i++)
printf("%c",a[i]);
}
int main()
{
char a[100]={};
scanf("%s",a);
int n=strlen(a);
for(int i=0;i<n;i++){
if(a[i]=='.'){
reverse(a,0,i);
printf(".");
reverse_small(a,i+1,n);
break;
}
if(a[i]=='/'){
reverse(a,0,i);
printf("/");
reverse(a,i+1,n);
break;
}
if(a[i]=='%'){
reverse(a,0,i);
printf("%%");
break;
}
if(i==n-1)
reverse(a,0,n);
}
}