###### 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");
}
```