#15254: 請幫忙 為何這樣不行 出現 SIGABRT


bear490421408 (bear)

學校 : 不指定學校
編號 : 83658
來源 : [124.9.117.230]
最後登入時間 :
2023-12-06 23:15:30
a022. 迴文 | From: [203.203.74.58] | 發表日期 : 2018-09-22 21:39

出現:
系統呼叫了 abort 函式! *** stack smashing detected ***: /4195944/code_4195944.exe terminated Aborted (core dumped)

要怎麼改呢

我的寫法是
#include <iostream>
#include <string>
using namespace std;
int main(){
string st;
string st2;
int i,k;
int n=0;
while(cin>>st){
k=st.length();
for (int i=0 ;i<k ; i++){
st2[k-i-1]=st[i];
}

n=0;
for(int i=0;i<k;i++){
if (st2[i]==st[i]){
n=n+1;
}
}
if(n==k){
cout<<"yes"<<endl;
} else{
cout<<"no"<<endl;
}

}
}
 
#15255: Re:請幫忙 為何這樣不行 出現 SIGABRT


bear490421408 (bear)

學校 : 不指定學校
編號 : 83658
來源 : [124.9.117.230]
最後登入時間 :
2023-12-06 23:15:30
a022. 迴文 | From: [203.203.74.58] | 發表日期 : 2018-09-22 22:08

後來參考 axzzreety1800@gmail.com  的程式

就順利通過

改成

#include <iostream>

#include <cstring>

using namespace std;

int main(){

string st;

int i,k;

int n=0;

while(cin>>st){

     k=st.length();

     n=0;

   for (int i=0 ;i<k ; i++){

      if(st[i] != st[k-i-1]){

        n=1;

        break;

      }

   }

    if(n==1){

     cout<<"no"<<endl;

    }

     if(n==0){

     cout<<"yes"<<endl;

     }

}

}

 
 
ZeroJudge Forum