Codebar 程式酒吧

一座輕鬆學習程式的酒吧

0%

a038. 數字翻轉

題目連結

https://zerojudge.tw/ShowProblem?problemid=a038

解題思路

先以字元陣列的形式讀取輸入的字串,由後往前輸出,注意避開前綴0。

注意事項

需注意前綴零不輸出,例如5800翻轉後為85,而不是0085。至於如何判斷該位是否為前綴零,可以用前面是否出現過非零數字來判斷。若前面沒有輸出過非0數字,則為前綴零,不輸出;若否,則為非前綴零,需輸出。

程式碼:C語言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
int main() {
//宣告並讀取字元陣列num,代表輸入的數字
char num[10];
scanf("%s", num);
//宣告變數test,並設初始值為0,記錄前面是否有輸出過非零數字
//若test為0,代表之前尚未輸出過非零數字,這一位數若是0即為前綴0,不需輸出
//若test為1,代表之前已經輸出過非零數字,這一位數就算是0也不是前綴0,需輸出
int test = 0;
for(int i = 0 ; i < strlen(num) ; i++)
if(num[(strlen(num)-1)-i] != '0' || test != 0) {
printf("%c", num[(strlen(num)-1)-i]);
//輸出後將test設為1,代表已經輸出過非零數字
test=1;
}
//若test仍為0,說明直到跑完指個陣列都未曾輸出過非零數字,也就是說這個數字就是0
if(test == 0)
printf("0");
return 0;
}