求问各位大佬!

P1035 [NOIP2002 普及组] 级数求和

benkuang @ 2022-11-16 20:30:55

#include <iostream>
using namespace std;
int main()
{
    int k, n;
    double sum=0;
    cin >> k;
    for(n=0; sum<=k; ++n)
        {
            sum += 1.0 / n;   
        }
    cout << n;
    return 0;
}

请问用for循环为啥错了,还是我用的方法不对。用while循环的话就可以,可是我也看不出这两的区别。


by sunyizhe @ 2022-11-16 20:45:01

@benkuang for 循环中 n 要从 1 开始,不然就除以 0 了。


by DwenDwen6 @ 2022-11-17 14:39:09

@benkuang 你要写int n = 0;你没int电脑可不知道那是啥玩意


by benkuang @ 2022-11-17 16:14:24

@sunyizhe 可是我的循环是++n,先加一后赋值,这样第一个n不是1进入循环吗?


by benkuang @ 2022-11-17 16:15:25

@DwenDwen6 int k, n; 这样子不是已经把k,n定义成整型变量了吗?


by sunyizhe @ 2022-11-18 12:54:08

@benkuang ++n 和 n++ 是一样的,不信试试下面的两个代码输出一样不一样:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    for(int i=0;i<5;i++)
        cout<<i<<endl;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
    for(int i=0;i<5;++i)
        cout<<i<<endl;
}

输出都是:

0
1
2
3
4

by sunyizhe @ 2022-11-18 12:55:28

@DwenDwen6 不知道就不要乱说,变量定义在循环外是可以的。


|