注册 登录
编程论坛 C++教室

请教各位高手,小白在这里先谢谢大家

lili3499 发布于 2016-06-12 16:23, 3168 次点击
以下这个程序编译通过,但是执行时遇到问题,输入一个1~15之间的数字再回车后,没有反应了,然后就有出现程序遇到问题要关闭的提醒。这道题是Noip2002普及组第一题,原题是这样的:已知:sn=1+1/2+1/3+……+1/n。显然对于任意一个整数k,当n足够大的时候,sn大于K。现给出一个整数K(1<=k<=15),要求计算出一个最小的n,使得sn>K.
#include<iostream>
using namespace std;
int main()
{
    int n=0,s=0;
    int k;
    cin>>k;
    while(s<=k)
    {
        ++n;
        s=s+1/n;
    }
    cout<<"n="<<n<<endl;
    cout<<"s="<<s;
    return 0;
}
3 回复
#2
rjsp2016-06-12 16:27
你认为 s=s+1/n 第一次循环后s等于多少,第二次循环后s等于多少
#3
lili34992016-06-12 16:31
回复 2楼 rjsp
第一次循环后s=1,第二次是1+1/2,不是吗?
#4
lili34992016-06-12 18:57
找到原因了,谢谢版主的提醒
1