首页新闻找找看学习计划

C++的一个小问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-10-11 21:52
题目是输入一个数n,如果1/2+1/3+1/4...之和大于n,求出相加的数的最小个数。比如说n=1.00;那么最小应该是1/2+1/3+1/4.输出结果应该是3.


#include<iostream> using namespace std; int main() { int i=2; float n; float sum=0; while(cin>>n&&n!=0.00) { while(sum<=n) { sum=sum+1.00/i; i++; } cout<<i-2<<endl; } return 0; }

我写的这个里面,由于i值没有每次都更改值,所以i只能累加,比如说刚开始输入的n为1.00,输出为3;再输入3.71,输出为61;再输入0.04,输出还是61(应该是1)。

我想把i=2加到第一个while循环体开头,但是输入3.71的时候,输出却为20,其他的输出结果页不对。

请问这个应该如何处理?

c++
响^_^的主页 响^_^ | 初学一级 | 园豆:110
提问于:2012-10-11 21:31
< >
分享
最佳答案
0

原因在于sum没有每次都初始化,应该在第一个while循环体开头,加入i=2;sum=0;每次sum也要初始化一下,就对了。

响^_^ | 初学一级 |园豆:110 | 2012-10-11 21:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册