为什么这个不输出啊?

P1035 [NOIP2002 普及组] 级数求和

Max_LS @ 2024-02-04 20:20:55

#include<bits/stdc++.h>
using namespace std;
int main(){
    int k,s=0;
    cin>>k;
    for(int i=1;;i++){
        s=s+1/i;
        if(s>k){
            cout<<i;
            return false;
        }
    }
    return 0;
}

by zhouzihang1 @ 2024-02-04 20:23:17

@Z18821938825 1是 int 类型的,i 也是 int 类型的,所以 1/i 的计算结果为 0,所以 s 永远为 0,所以没有输出。


by 0v_0___SYC @ 2024-02-04 20:37:27

你的代码想要输出就需要s>=1, s每次循环都等于s+1/i,这里会先算1/i,i>=1,所以1/i=0,s永远不会增加,所以不会输出


by 0v_0___SYC @ 2024-02-04 20:39:00

一搜解决这个问题s应该是double型的


by 0v_0___SYC @ 2024-02-04 20:39:36

并且i的前面要加(double)


by djtbsq @ 2024-02-06 15:08:53

请问一下提问的时候怎么标记代码


by Wuhongyi17 @ 2024-02-08 02:43:25

print("这是代码")

格式:``` [输入内容] ```


by Wuhongyi17 @ 2024-02-08 02:53:12

#include<bits/stdc++.h>
using namespace std;
int main(){
    int k,s=0;          //把这里的int改为float
    cin>>k;
    for(int i=1;;i++){
        s=s+1/i;        //可以改为  s+=1.0/i
        if(s>k){
            cout<<i;
            return false;
        }
    }
    return 0;
}

主要是整形和浮点型的问题


|