简单的程序来判断数字是偶数还是奇数,负数都显示为偶数

时间:2014-11-03 01:40:11

标签: c++ math

所以我在春天为我的编程课做准备,课堂笔记要求进行自我评估。我在大约3分钟的时间内写了这个程序,但是我不确定为什么它显示所有负数都是平的。有什么想法吗?

#include <iostream>
using namespace std;

int main()
{
    int x,y;

    cout << "Enter a number for reference" << endl;
    cin >> x;

    cout << endl << "The Number you entered was: " << x << endl;

    y = x%2;

    if (x<0 && x!=0) {
        cout << endl <<"The Number you entered is negative" << endl;
    }
    else if(x==0) {
        cout << endl << "The number is neither negative or positive" << endl;
    }
    else {
        cout << endl << "The Number you entered is Positive" << endl;
    }

    if (y>0 /*&& x!=0*/) {
        cout << "The Number you entered is odd" << endl;
    }
    else if(x==0) {
        cout << "The number you entered is neither even or odd" << endl;
    }
    else {
        cout << "The Number you entered is even" << endl;
    }

    system("PAUSE");
    return 0;
}

3 个答案:

答案 0 :(得分:2)

#include <iostream>

bool isEven(int n) {
    if (n % 2 == 0)
        return true;
    else
        return false;
}

int main() {

    int myNumber = 0;

    std::cout << "Enter number: ";
    std::cin >> myNumber;

    if (isEven(myNumber))
        std::cout << myNumber << " is even." << std::endl;
    else
        std::cout << myNumber << " is odd." << std::endl;

    return 0;
}

首先,数字的符号与奇数或偶数无关。其次,零是偶数(0是2的整数倍; 0×2)。上面的代码要求输入整数,函数isEven(n)然后返回true或false,以便在除以2时是否有余数。

答案 1 :(得分:1)

%操作(程序中y)的可能结果是:

  • 正1(如果x是正奇数)
  • 零(如果x是偶数或零)
  • 否定1(如果x是负奇数)

因此,如果y为零,您需要检查x以确定“偶数”。或neither odd nor even。 但是在您应该检查y为零的情况下的代码中,您只检查x的值。

效果是,对于每个否定的x,(产生y == 0y < 0),最后的else语句将会执行。

答案 2 :(得分:1)

所有整数都是偶数或奇数,应该没有“你输入的数字既不均匀也不奇怪”!

你可以这样做:

if ( y == 0 )
{
    cout << "The Number you entered is even" << endl;
}
else
{
    cout << "The Number you entered is odd" << endl;
}

这是有效的,因为甚至的定义等于0 mod 2 ,这正是做% 2然后检查== 0所做的事情。< / p>