###### tags: Basic - [X] check # a038: 數字翻轉 :::info 輸入任意數字,並將其數字全部倒轉 ::: :::danger 測資2,3不過33%成功 ::: ```c= #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> void reverse(char*,int); int main(){ char input[(int)pow(2,10)];//宣告一個宣字元陣列 scanf("%s",input); int length=strlen(input);//計算input字串長度 char* start=&input[0];//宣告一個指標指向char陣列起始值 if(input[0]==0&length==1){ printf("%c",input[0]); } reverse(start,length);//傳入字串指標跟長度 } void reverse(char*start,int length){ char* j=start+(length-1);//指向陣列最尾的指標 for(char* i=start,*j=start+(length-1);i<=j;i++,j--){ char temp=*i; *i=*j; *j=temp; } while(*start=='0'){ start=start+1; } for(char*a=start;a<=start+(length-1);a++){ printf("%c",*a); } printf("\n"); } ``` :::danger 測資3不過66%成功 ::: ```c= #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> void reverse(char*,int); int main(){ char input[(int)pow(2,10)];//宣告一個宣字元陣列 scanf("%s",input); int length=strlen(input);//計算input字串長度 char* start=&input[0];//宣告一個指標指向char陣列起始值 reverse(start,length);//傳入字串指標跟長度 } void reverse(char*start,int length){ char* j=start+(length-1);//指向陣列最尾的指標 for(char* i=start,*j=start+(length-1);i<=j;i++,j--){ char temp=*i; *i=*j; *j=temp; } while(*start=='0'){ if(start[length-1]==*start){ printf("0"); goto test; } start=start+1; } if(*start!=0){ for(char*a=start;a<=start+(length-1);a++){ printf("%c",*a); } } test:{} printf("\n"); } ``` :::success 通過 ::: ```c= #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> void reverse(char*,int); int main(){ char input[(int)pow(2,10)];//宣告一個宣字元陣列 scanf("%s",input); int length = strlen(input);//計算input字串長度 char* start=&input[0];//宣告一個指標指向char陣列起始值 reverse(start,length);//傳入字串指標跟長度 } void reverse(char*start,int length){ char* j=start+(length-1);//指向陣列最尾的指標 for(char* i=start,*j=start+(length-1);i<=j;i++,j--){ char temp=*i; *i=*j; *j=temp; } while(*start == '0' && length != 1){ start = start+1; length--; } for(char *a = start; a <= start+(length-1); a++){ printf("%c",*a); } printf("\n"); } ```