1 #include<stdio.h> 2 #include<string.h> 3 #include<malloc.h> 4 char* left( char *num, char n); 5 char* right( char *num, char n); 6 char* rever(char* p); 7 int main() 8 { 9 char num[20]; 10 scanf("%s", &num); 11 int type = 0; 12 int i; 13 14 for(i = 0;i < strlen( num); i++){ 15 if(num[i] == '.'){ 16 type = 1; 17 }else if(num[i] == '/'){ 18 type = 2; 19 }else if(num[i] == '%'){ 20 type = 3; 21 } 22 23 } 24 25 switch (type) 26 { 27 28 29 case 0:{ 30 char *result = rever(num); 31 printf("%s",result); 32 break; 33 } 34 case 1:{ 35 char *result = left(num,'.'); 36 char *part = right(num, '.'); 37 strcat(result, part); 38 printf("%s",result); 39 break; 40 } 41 case 2:{ 42 char *result = left(num, '/'); 43 char *part = right(num , '/'); 44 strcat(result, part); 45 printf("%s",result); 46 break; 47 } 48 case 3:{ 49 char *result = left(num, '%'); 50 char *part = right(num , '%'); 51 strcat(result, part); 52 printf("%s",result); 53 break; 54 } 55 56 } 57 58 return 0; 59 60 } 61 62 char* left( char *num, char n)//将小数以左的数字逆转去零 63 { 64 char *tem = strchr(num, n); 65 int i; 66 *tem = '\0'; 67 char *lef = (char*)malloc(sizeof(num) + 1) ; 68 strcpy(lef, num); 69 *tem = n; 70 char *end = rever(lef); 71 return end; 72 } 73 74 char* right( char *num, char n)//将小数以左的数字逆转去零 75 { 76 char *tem = strchr(num, n); 77 int i; 78 int len = strlen(tem); 79 char *p = (char*)malloc(sizeof(tem) ) ; 80 char *q = (char*)malloc(sizeof(tem) ) ; 81 strcpy(p, tem); 82 q[0] = n; 83 for(i = 1; i < strlen(p)-1; i++){ //数字反转 84 q[len] = p[i]; 85 len--; 86 } 87 for(i = strlen(q); i > 0; i--){ //去零 88 if(q[i] == 0){ 89 q[i] = '\0'; 90 }else{ 91 break; 92 } 93 } 94 return q; 95 } 96 97 char* rever(char* p) //去零加反转 98 { 99 int i; 100 for(i = strlen(p); i > 0; i--){ 101 if(p[i] == 0){ 102 p[i] = '\0'; 103 }else{ 104 break; 105 } 106 } 107 char *q = (char*)malloc(sizeof(p) ) ; 108 int len = strlen(p); 109 for(i = 0; i < strlen(p)-1; i++){ //字符反转 110 q[len] = p[i]; 111 len--; 112 } 113 return q; 114 } 115 116 117 12