题目是输入一个数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,其他的输出结果页不对。
请问这个应该如何处理?
原因在于sum没有每次都初始化,应该在第一个while循环体开头,加入i=2;sum=0;每次sum也要初始化一下,就对了。