当前位置:   article > 正文

数字反转

数字反转

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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]);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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]);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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]);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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



}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/编程变革者/article/detail/60499
推荐阅读
相关标签
  

闽ICP备14008679号