#20158: 請問怎麼削去前面的零QWQ


v1996101 (Sans)

學校 : 不指定學校
編號 : 102249
來源 : [163.32.78.54]
最後登入時間 :
2020-07-13 09:45:08
a038. 數字翻轉 | From: [163.32.78.54] | 發表日期 : 2019-12-10 11:52

#include<iostream>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        char c[s.length()];
        for(int i=0;i<s.length();i++)
        {
            c[s.length()-1-i]=s[i];
        }
        for(int j=0;j<s.length();j++)
        {
            cout << c[j];
        }
        cout << endl;
    }
}

-----------------------------------------------------------------------

以上是我的程式碼,請問怎麼削去前面的零QWQ,求解答。

 
#22515: Re:請問怎麼削去前面的零QWQ


snakeneedy (蛇~Snake)

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

不一定需要用另外一個 char [] 來存,對 s 反向處理即可

for (int i = s.length() - 1; i >= 0; i--) {
  ; // 輸出 s[i]
}

 

去掉前面的零,可以想成「遇到不是 '0' 之前,都不要輸出」

bool isZero = true;
for (/* 略 */) {
  if (isZero && s[i] == '0') continue;
  // 遇到不是 '0' 的時候,才會到下面這段
  isZero = false;
  cout << s[i];
}

要注意,輸入的數字有可能是 0,上面的寫法會沒有輸出 (一直被 continue),後面要再補上

if (isZero) cout << '0';

最後記得換行

 
ZeroJudge Forum