题目描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入
键盘输入 k
输出
屏幕输出 n
样例输入
1
样例输出
2
本题考察循环和判断语句结合,注意1.0这个地方的数据处理,1.0的目的是为了让计算作为浮点数进行计算,见代码解释,其他地方没有难点。
#include<stdio.h>
int main()
{int n,k;//定义未知数k和循环变量也即是结果nscanf("%d",&k);//输入目的值kdouble sum=0;//注意是小数,所以需要用实数类型doublefor(n=1;;n++)//设置个无限循环去寻找n{sum+=1.0/n;//这里养成习惯用1.0来进行计算,这样会将1.0当做浮点数计算//如果是1会化为整型,找不到答案。导致时间超限。if(sum>k)//当sum大于k的时候。结束循环break;}printf("%dn",n);//输出结果nreturn 0;//程序正常结束
}
本文发布于:2024-02-02 19:05:30,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170687192945823.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |