**题目:**编写一个函数,输入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);
}
运行结果同上