这个代码为什么写不出正确答案

img

因为你的m再循环过程中变化了,所以n-m这个循环次数也变化了,所以结果是错的

img

#include <iostream>
using namespace std;
int main()
{
    int m, n, t = 0;; cin >> m >> n;
    for (int i = m; i <= n; i++)
    {
        if (i % 2 != 0)
        {
            t += i;
        }
    }
    cout << t << endl;
    return 0;
}

#include<iostream>
using namespace std;
int main()
{
    int m, n, t = 0;
    cin >> m >> n;
    for (; m <= n; ++m)
    {
        if (m % 2 != 0)
            t += m;
    }
    cout << t << endl;
    return 0;
}

#include<iostream>
using namespace std;
int main()
{
    int a, b,sum=0;
    cin >> a >> b;
    for (int i = a; i <= b; i++)
    {
        if (i % 2 != 0)
            sum += i;
    }
    cout << sum;
}

你的代码复杂了点,i<n-m会随着m++变化,所以要提前固定这个值,其次循环次数得算上m和n,所以不能从1到n-m


#include<iostream>
using namespace std;
int main()
{
    int m, n,t=0;
    cin >> m >> n;
    int d = n - m;
    for (int i = 0; i <= d; i++)
    {
        if (m % 2 != 0)
            t += m;
        m++;
    }
    cout << t;
}

for(;m<=n;m++)就可以了,i完全是个多余的变量,算不好还容易整错了

循环实现出错了,修正如下:

#include <iostream>
using namespace std;
int main()
{
    int m, n, sum = 0;
    cin >> m >> n;
    for (int i = m; i <= n; i++)
    {
        if (i % 2 != 0)
        {
            sum += i;
        }
    }
    cout << sum << endl;
    return 0;
}

运行结果如图:

img


解释:1-5之间奇数之和(含边界1和5),1+3+5 = 9

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!

你的代码复杂了点,i<n-m会随着m++变化,所以要提前固定这个值,其次循环次数得算上m和n,所以不能从1到n-m


#include<iostream>
using namespace std;
int main()
{
    int m, n,t=0;
    cin >> m >> n;
    int d = n - m;
    for (int i = 0; i <= d; i++)
    {
        if (m % 2 != 0)
            t += m;
        m++;
    }
    cout << t;
}