循环计数某个范围内的事件编号时总是返回1

Loop to count event numbers in a range always returns 1

本文关键字:编号 返回 事件 范围内 循环      更新时间:2023-10-16

我需要一些建议和有用的建议,让我朝着正确的方向前进。我的功能是计算输入a和输入b之间有多少偶数。

int evens(int a, int b)
{
    int p = 0;
    for(int i=a; i<=b; i++)
    {
        if(i % 2==0)
            ++p;
         return (p);
    }
}

从逻辑上讲,这个函数对我来说很有意义,也很容易理解发生了什么。然而,当我运行程序时,无论输入#是什么,它都会将p返回为"1"。这让我相信,由于某种原因,循环只运行一次,就这样了

您返回得太早。把它放在循环之外。

可以这样重写:

int evens(int a, int b) {
    if(a != b)
        return ((b-a)/2)+1; //I can't think straight, I don't know why
    else {
        if(a % 2 == 0)
            return 1;
        else
            return 0;
    }
}