#8795: RE (SIGSEGV)


vagrantlike (丫維)

學校 : 不指定學校
編號 : 27614
來源 : [114.24.87.102]
最後登入時間 :
2020-01-23 17:45:52
a007. 判斷質數 | From: [112.104.100.101] | 發表日期 : 2014-05-04 00:32

 你好 我用c++ 常得到如下錯誤訊息:
================= RE (SIGSEGV) 執行時期錯誤 記憶體區段錯誤!  Segmentation fault ================= 上網查可能原因為:  ================= * 通常為使用超過陣列範圍 * 指標指向不正確位址! * 陣列初始化不正確! * 嘗試在執行時期定義陣列長度! ================= 但我使用家裡的編譯器測試是ok的!? 我把程式貼在下方:
#include <iostream>
#include <math.h>
#include <string>

using namespace std;

int main()
{
    int iary[20] ;
    string sary[20];
    int counter = 0;


    for(int i=0;i<20;++i){
        iary[i]=0;
        sary[i]="質數";
    }

    while(cin>>iary[counter]){
        if(iary[counter]<=2147483647){
            if(iary[counter]==1||(iary[counter]>2)&(iary[counter]%2==0)){
sary[counter]="非質數";
            }
        }else{

        for(int i=3;i<=sqrt(iary[counter]);i+=2){
                if( iary[counter]==3){
                    sary[counter]="質數";
                    break;
                }

                if(iary[counter]%i==0){
                    sary[counter]="非質數";
                    //
                    break;
                }
            }
//
//         //測試代碼
//        if(counter>=2){
//            break;
//        }
        }
        ++counter;

    }

    for(int i=0;i<counter;++i){
        cout<<sary[i]<<'\n';
    }

    return 0;
}
 
想請高手看看 不知哪裡有錯 thanks' 
 
ZeroJudge Forum