1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。关注微信公众号【嵌入式大杂烩】,回复1024,即可免费获取!

一、基本介绍

    已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。键盘输入 K,屏幕输出 n。

 

二、完整程序

/*----------------------------------------------------------------------------------------
	
	Program Explain:级数求和。已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,
	当n足够大的时候,Sn大于K。现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
	Input Description:键盘输入 K
	Output Description:屏幕输出 n
    Create Date:2018.2.2 by lzn

----------------------------------------------------------------------------------------*/

#include <stdio.h>

int main(void)
{
	int n,K;
	double Sn,An;
	
	printf("Please input K(1<=K<=15):");
	scanf("%d",&K);
	if( (K>=1)&&(K<=15) )
	{
		for(n=1;;n++)
		{
			An = 1.0/n;
			Sn += An;
			if(Sn>K)
			{
				break;
			}
		}
		printf("n=%d,Sn=%f\n",n,Sn);
	}
	else
	{
		printf("Input error!Please input again!\n");
	}
	
	return 0;
}

 

程序执行结果如下图所示:

C语言 | 级数求和。Sn= 1+1/2+1/3+…+1/n_编程开发