[問題] 是我寫的程式有錯,還是Dev C++編譯器的問題

供程式設計討論與經驗分享。例如: C / C++ / Java / C# / Delphi / Visual Basic...

版主: maa

分享到: Facebook

[問題] 是我寫的程式有錯,還是Dev C++編譯器的問題

文章flame026 » 週四 9月 26, 2013 2:42 am

大家好!
題目的要求是:
輸入一字串,並刪除所有的大寫C,而且只能使用一個陣列,然後輸出刪除大寫C後的字串。

我是用Dev-C++測試的,版本為 4.9.9.2 with Mingw/GCC 3.4.2
當輸入字串 CCCCAAAA 時問題就發生了,
為何 迴圈while(1) 會 break ? ch[i] 的值 明明沒有符合 break 的條件, while(1) 只跑了第一圈就 break 了,這到底是?


以下是我的code:
代碼: 選擇全部
#include <iostream>
#include <stdlib.h>
using namespace std;

int main(){
   int i=0, j=0, len=0;
   char ch[100]="";
   
   cin>>ch;
   while(ch[i]){
      len++;
      i++;
   }
   
   i=0;
   while(1){
      if(ch[i]=='C'){
         for(j=i; j<len; j++){
            ch[j]=ch[j+1];
         }
      }
      //cout<<"ch[i]="<<ch[i]<<endl;
      if(ch[i-1]!='C' && ch[i]=='C') i--;
      if(ch[i]=='C' && ch[i+1]=='C') i--;
      if(ch[i]=='C' && ch[i+1]=='\0') i--;
      if(ch[i]=='\0') break;
      i++;
   }

   cout<<ch<<endl;
   system("pause");
   return 0;
}
flame026
剛學走路的小朋友
 
文章: 2
註冊時間: 週四 9月 26, 2013 2:02 am

Re: [問題] 是我寫的程式有錯,還是Dev C++編譯器的問題

文章benwu » 週四 9月 26, 2013 3:32 pm

是你的邏輯有錯誤,
代碼: 選擇全部
     if(ch[i-1]!='C' && ch[i]=='C') i--;
      if(ch[i]=='C' && ch[i+1]=='C') i--;
      if(ch[i]=='C' && ch[i+1]=='\0') i--;

這一段有問題
我不是大吳老師,也不是小吳老師,我是Ben老師
我的部落格
http://eportfolio.fju.edu.tw/053792
頭像
benwu
資管系教師
 
文章: 645
註冊時間: 週二 4月 20, 2004 4:17 pm
來自: 輔大資管系

Re: [問題] 是我寫的程式有錯,還是Dev C++編譯器的問題

文章flame026 » 週五 9月 27, 2013 8:03 am

benwu 寫:是你的邏輯有錯誤,
代碼: 選擇全部
     if(ch[i-1]!='C' && ch[i]=='C') i--;
      if(ch[i]=='C' && ch[i+1]=='C') i--;
      if(ch[i]=='C' && ch[i+1]=='\0') i--;

這一段有問題


謝謝老師。
我把
if(ch[i]=='\0') break;

if(i!=-1 && ch[i]=='\0') break;
就正常了。

話說用VC6編譯完未修改的程式,並執行後,輸入CCCCAAAA,輸出居然正常,這就是所謂的"運氣好"剛好正常吧,害我瞎折騰。
flame026
剛學走路的小朋友
 
文章: 2
註冊時間: 週四 9月 26, 2013 2:02 am

Re: [問題] 是我寫的程式有錯,還是Dev C++編譯器的問題

文章benwu » 週五 9月 27, 2013 8:36 am

其實你把一個簡單的程式寫複雜了,你既然已經寫完,可以想一下如何用更精簡的方式完成 XD
我不是大吳老師,也不是小吳老師,我是Ben老師
我的部落格
http://eportfolio.fju.edu.tw/053792
頭像
benwu
資管系教師
 
文章: 645
註冊時間: 週二 4月 20, 2004 4:17 pm
來自: 輔大資管系


回到 程式設計討論版

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客

cron