大家好,欢迎来到IT知识分享网。
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); } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116953.html