当前位置:首页 > C语言 >

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+..

发布时间:2025-04-17 18:52:27 作者:佚名 阅读:(65)

今天为大家分享一个C语言的经典案例。该程序根据输入的整数n判断其奇偶性,如果n为偶数,则调用函数求解1/2 + 1/4 + ... + 1/n 的和;如果n为奇数,则调用函数求解1/1 + 1/3 + ... + 1/n的和。通过该案例,可以帮助大家更好地理解条件判断和循环语句的使用。

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+..

1、程序分析:

(1)、先判断是奇数还是偶数 * 2 、分数分子都是一,偶数分母从 2 开始,奇数的分母从 1 开始,分母差值都为 2

(2)、分数分子都是一,偶数分母从 2 开始,奇数的分母从 1 开始,分母差值都为 2

2、正常写法:

#include 

int main() {
	float peven(),podd(),dcall();
	float sum;
	int n;
	while (1) {
		scanf("%d",&n);
		if(n>1)
		break;
	}
	if(n%2==0) {
		printf("Even=");
		sum=dcall(peven,n);
	} else {
		printf("Odd=");
		sum=dcall(podd,n);
	}
	printf("%f",sum);
}
float peven(int n) {
	float s;
	int i;
	s=1;
	for (i=2;i<=n;i+=2)
		s+=1/(float)i;
	return(s);
}
float podd(n)
int n; {
	float s;
	int i;
	s=0;
	for (i=1;i<=n;i+=2)
		s+=1/(float)i;
	return(s);
}
float dcall(fp,n)
float (*fp)();
int n; {
	float s;
	s=(*fp)(n);
	return(s);
}

3、指针写法:

#include 

float pEven(int n)
{
	float sum = 0;
	for (float i = 2; i <= n; i += 2)
	{
		sum += 1 / i;
	}
	return sum;
}

float pOdd(int n)
{
	float sum = 0;
	for (float i = 1; i <= n; i += 2)
	{
		sum += 1 / i;
	}
	return sum;
}

float dcall(float (*fp)(int n), int n)
{
	float s = fp(n);
	return s;
}

int main()
{
	int n = 0;
	float sum = 0;
	while (1)
	{
		scanf("%d", &n);
		if (n < 1)
			break;
		else if ((n % 2) == 0)
		{
			printf("Even = ");
			sum = dcall(pEven, n);
		}
		else
		{
			printf("Odd = ");
			sum = dcall(pOdd, n);
		}
		printf("%f", sum);
	}
	system("pause");
	return 0;
}


以上就是云梦编程为大家介绍的关于编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n的全部内容了,希望对大家有所帮助,了解更多相关文章请关注云梦编程网!

© 2023 - 云梦编程网 版权所有 鲁ICP备2021017318号-4