찾다

 >  Q&A  >  본문

在计蒜客oj用c++编写的一个简单的代码出现段错误

#include<iostream>
using namespace std;

int main(void)
{
    char a[50],b[50],ch;
    int i = 0,j = 0;
    cin.get(ch);
    while(ch != '\n')
    {
        a[i] = ch;
        i++;
        cin.get(ch);
    }
   // getchar();
    cin.get(ch);
    while(ch != '\n')
    {
        b[j] = ch;
        j++;
        cin.get(ch);
    }
   // getchar();
    
    for(int n = 0;n < i;n++)
    {
        if(a[n] == '1' && b[n] == '1')
        {
            cout << '1';
        }
        else if(a[n] == '1' && b[n] == '0')
        {
            cout << '0';
        }
        else if(a[n] == '0' && b[n] == '1')
        {
            cout << '0';
        }
        else
        {
            cout << '1';
        }
    }
    
    return 0;
}

样例输入没有错误,只是一直说是段错误,求大神看看

阿神阿神2805일 전636

모든 응답(2)나는 대답할 것이다

  • PHPz

    PHPz2017-04-17 15:01:56

    a[50]과 b[50]을 a[51]과 b[51]로 변경하면 충분합니다

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:01:56

    사실 XOR 판단을 사용한다면 배열이 필요하지 않습니다. 먼저 XOR을 한 다음 부정해야 합니다.

    !(1 ^ 1) = 1
    !(1 ^ 0) = 0
    !(0 ^ 1) = 0
    !(0 ^ 0) = 1

    회신하다
    0
  • 취소회신하다