为啥这个代码运行的结果完全不对啊

P1035 [NOIP2002 普及组] 级数求和

lwthree @ 2023-09-15 20:33:48

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int k;
    int i=1;
    double sum = 0;
    cin>>k;
    while (sum<=k)
    {
        sum+=1.0/i;
        i+=1;
    }
    printf("%d",sum);
    return 0;
}

by lwthree @ 2023-09-15 20:37:01

求大佬回复!!!


by 小小蒲公英 @ 2023-09-15 20:56:05

printf("%d",sum);

改成

printf("%d",i-1);

by gf20220934 @ 2023-09-15 20:57:57

最后输出应该为i-1

数据由1/1至1/i,由于在循环中,

sum+=1.0/i

之后跳出循环之前有i+=1所以输出i-1。

最后:建议以后不要随意scanf,printf和cin,cout混用。

由于个人原因,一直没发出来,请见谅。


by gf20220934 @ 2023-09-15 21:02:38

@lwthree


by lwthree @ 2023-09-15 21:26:23

首先,谢佬! 然后为啥我输入是1的时候 sum输出是0 虽然这里确实写错了 但按理来说也不是0吧


by lwthree @ 2023-09-15 21:26:50

@gf20220934


by lwthree @ 2023-09-15 21:29:48

不用了 我知道了 printf 应该 用 lf 输出 sum 的

最近IQ不在线。。。


by gf20220934 @ 2023-09-16 09:01:18

@lwthree

有没有可能double数据型要用%lf输出呢?

(对不起我昨晚没看见你的回复)


|