如何把一个数字反转

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);
    }



}

知秋君
上一篇 2024-08-19 14:02
下一篇 2024-08-19 13:36

相关推荐