#13606: ___C


snakeneedy (蛇~Snake)


我是用字串處理的方式,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 (蘇)


我是用字串處理的方式,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)


 
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)


補充:

再重看自己的 code 發現,在

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

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