【程式解題】 ZeroJudge a038數字翻轉 C解法(逐行註解)
評分結果:AC (2ms, 96KB)
解題思路:在string跟integer之間轉換以消去多餘的0。
例如input是002330,先轉integer消去前方的0,變成2330。之後再轉回字串以便翻轉。翻轉完變成0332,再轉成整數消前方的0,得到output為332。(僅是舉例,並無推銷2330之意)
備註:itoa指令(非標準)不能使用,可改用sprintf。
逐行註解的程式碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int i,j;//loop
char input[1000]=" ";//input
int temp1,temp2;//轉成整數時暫存值
char middle1[1000]=" ";//轉成字串時暫存值
char middle2[1000]=" ";//轉成字串時暫存值
char output[1000]=" ";//output
scanf("%s",input);//input
temp1=atoi(input);//轉整數消除數字前方多餘的0
sprintf(middle1,"%d",temp1);//轉回字串以便進行翻轉
//即itoa(temp1,middle1,10);
for(i=0;i<strlen(middle1);++i){//翻轉,翻轉後結果在middle2
middle2[i]=middle1[strlen(middle1)-1-i];
}
temp2=atoi(middle2);//轉整數消去前方多餘的0
sprintf(output,"%d",temp2);
//多餘的步驟,其實上一步即可輸出,只是要呈現output
//itoa(temp2,output,10);
printf("%s",output);//輸出
return 0;
}
留言
張貼留言