#13606: C


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a038. 數字翻轉 | From: [218.164.125.30] | 發表日期 : 2018-03-29 01:24

我是用字串處理的方式,index 從開頭結尾分別去除連續的 0,再反向輸出字串。

// a038: 數字翻轉
#include <stdio.h>
#include <string.h>

int main() {
  char cstr[20];
  int st, en;
  while (scanf("%s", cstr) != EOF) {
    st = 0, en = strlen(cstr) - 1;
    while (cstr[st] == '0') ++st; // 從開頭去除 0
    while (cstr[en] == '0') --en; // 從結尾去除 0
    if (st > en) { // 整串都是 0 的情況
      puts("0");
    } else {
      for (int i = en; i >= st; --i) printf("%c", cstr[i]); // 反向輸出
      puts(""); // 換行
    }
  }
  return 0;
}

AC (0ms, 84KB)

 
#13635: Re:C


s16101225@stu.edu.tw (蘇)

學校 : 不指定學校
編號 : 74465
來源 : [110.28.77.16]
最後登入時間 :
2019-05-13 21:51:40
a038. 數字翻轉 | From: [101.8.177.160] | 發表日期 : 2018-03-31 16:03

我是用字串處理的方式,index 從開頭結尾分別去除連續的 0,再反向輸出字串。

// a038: 數字翻轉
#include 
#include 

int main() {
  char cstr[20];
  int st, en;
  while (scanf("%s", cstr) != EOF) {
    st = 0, en = strlen(cstr) - 1;
    while (cstr[st] == '0') ++st; // 從開頭去除 0
    while (cstr[en] == '0') --en; // 從結尾去除 0
    if (st > en) { // 整串都是 0 的情況
      puts("0");
    } else {
      for (int i = en; i >= st; --i) printf("%c", cstr[i]); // 反向輸出
      puts(""); // 換行
    }
  }
  return 0;
}

AC (0ms, 84KB)

if (st > en) { // 整串都是 0 的情況
      puts("0");
    } 
不太明白這裡的意思,可以解釋嗎?



 
#13639: Re:C


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a038. 數字翻轉 | From: [1.173.96.251] | 發表日期 : 2018-03-31 16:50

 
if (st > en) { // 整串都是 0 的情況
      puts("0");
    } 
不太明白這裡的意思,可以解釋嗎?

我用舉例說明

0 為例,一開始 st = 0, en = 0,經過兩個 while 之後 st 會變 1,en 會變 -1,所以 st > en
000000 為例,一開始 st = 0, en = 5,經過兩個 while 之後 st 會變 6,en 還是變 -1,也是 st > en

若中間有不是零的數,如 00100,再 while 之後 st = en = 2,就不符合該條件 st > en

 

 
#13640: Re:C


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a038. 數字翻轉 | From: [1.173.96.251] | 發表日期 : 2018-03-31 16:52

補充:

再重看自己的 code 發現,在

while (cstr[st] == '0') ++st;
while (cstr[en] == '0') --en;

會有 index out of range 的問題,但 zerojudge 還是讓我過了

 
ZeroJudge Forum