0

正しい方向に導くために、いくつかのアドバイスと役立つ指針が必要です。私の関数は、入力 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」として返されます。これは、ループが何らかの理由で一度だけ実行され、それで終わりだと私に信じさせます。

4

1 に答える 1

3

帰りが早すぎます。ループの外に置いてください。

ただし、次のように書き換えることができます。

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;
    }
}
于 2013-02-06T02:58:29.583 に答える