【程式解題】 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;

}

留言

這個網誌中的熱門文章

【程式解題】2019年4月TOI練習賽新手組 - 滿意度調查 (Survey of Satisfaction) C解法(註解版)