C 练习实例76-求倒数和

**题目:**编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)。

代码

cpp 复制代码
#include <stdio.h>
void fun1(int n,double *ret)
{
	for(int i=1;i<=n;i+=2)
		*ret+=1.0/i;
}
void fun2(int n,double *ret)
{
	for(int i=2;i<=n;i+=2)
		*ret+=1.0/i;
}
int main()
{
	int n;
	double ret=0.0;
	printf("请输入一个大于零的整数:");
	scanf("%d",&n);
	if(n%2)
		fun1(n,&ret);
	else
		fun2(n,&ret);
	printf("数列的和为:%f",ret);
}

Sample Input & Sample Output

bash 复制代码
请输入一个大于零的整数:3
数列的和为:1.333333
bash 复制代码
请输入一个大于零的整数:4
数列的和为:0.750000

利用指针函数这条要求好像没有实现,现在补上

函数指针-指向函数的指针(不知到有啥用,第一次见到)

代码

cpp 复制代码
#include <stdio.h>
void fun1(int n,double *ret)
{
	for(int i=1;i<=n;i+=2)
		*ret+=1.0/i;
}
void fun2(int n,double *ret)
{
	for(int i=2;i<=n;i+=2)
		*ret+=1.0/i;
}
int main()
{
	void fun1(int n,double *ret);
	void fun2(int n,double *ret);
	void (*p1)(int,double *)=&fun1;//函数指针-指向函数的指针(不知到有啥用,第一次用)
	void (*p2)(int,double *)=&fun2;
	int n;
	double ret=0.0;
	printf("请输入一个大于零的整数:");
	scanf("%d",&n);
	if(n%2)
		p1(n,&ret);
	else
		p2(n,&ret);
	printf("数列的和为:%f",ret);
}

运行结果同上

相关推荐
weixin_446023561 分钟前
C语言入门:发展历程与编程应用
c语言·基础知识·发展历程·语法结构·编程应用
Fanfanaas4 分钟前
Linux 进程篇 (四)
linux·运维·服务器·开发语言·c++·学习
Sylvia-girl4 分钟前
C++中类与对象
开发语言·c++
良木生香8 分钟前
【C++初阶】:泛型编程的代表作---C++初阶模板
c语言·开发语言·数据结构·c++·算法
网域小星球15 分钟前
C++ 从 0 入门(一)|C++ 基础语法、命名空间、引用、IO 输入输出
开发语言·c++·引用·命名空间·cin/cout
yashuk25 分钟前
C语言中强制类型转换:不同数据类型间的转换方法与示例
c语言·强制类型转换·示例代码·注意事项·数据类型转换
旖-旎38 分钟前
栈(验证栈序列)(5)
c++·算法·leetcode·力扣·
(Charon)1 小时前
【Qt/C++】Qt/C++ 中 :: 和 . 到底有什么区别?
开发语言·c++·qt
REDcker1 小时前
C++跨平台与跨语言绑定工具:SWIG、Djinni 等选型
开发语言·c++
北漂Zachary1 小时前
PHP vs C++ vs 易语言:三大语言对比解析
开发语言·c++·php