目录

  • 1 题目
  • 2 分析
  • 3 实现
  • 4 运行结果

1 题目

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

2 分析

首先判断n的奇偶性,通过if控制语句对2取余来判断,再根据n的奇偶性调用不同的计算方法,这里把两个计算方法写成两个函数,不难发现累加的规律为当n为偶数时,所有累加项都是以1为分子,分母是从2开始的偶数序列;当n为奇数时,所有累加项分子也是1,分母则是从1开始的奇数序列。

注:本题使用函数指针来实现。

3 实现

#include <stdio.h>
#include <stdlib.h>
double evenumber(int n);
double oddnumber(int n);int main()
{int n;double sum;double (*pfunc)(int); // 定义函数指针printf("请输入n:");scanf("%d", &n);if (n % 2 == 0) { // 判断奇偶pfunc = evenumber; // 偶数函数} else {pfunc = oddnumber; // 奇数函数} sum = (*pfunc)(n); // 通过指针调用函数printf("%lf\n", sum);return 0;
}// 当n为偶数时
double evenumber(int n)
{double s = 0; // 累加和double a = 0; // 保存每一项的临时变量for (int i = 2; i <= n; i += 2) {a = (double)1/i; // 该除法会出现小数,所以要强制转换s += a; // 累加}return s;
}// 当n为奇数时
double oddnumber(int n)
{double s = 0; // 累加和double a = 0; // 保存每一项的临时变量for (int i = 1; i <= n; i += 2) {a = (double)1/i; // 该除法会出现小数,所以要强制转换s += a; // 累加}return s;
}

4 运行结果

PS E:\C++WorkSpace> cd "e:\C++WorkSpace\" ; if ($?) { g++ FFF.cpp -o FFF } ; if ($?) { .\FFF }
请输入n:10
1.141667
PS E:\C++WorkSpace> cd "e:\C++WorkSpace\" ; if ($?) { g++ FFF.cpp -o FFF } ; if ($?) { .\FFF }
请输入n:51
2.610834

C语言经典例76-根据n的奇偶性累加相关推荐

  1. C语言经典例98-将字符转为大写字母并写入文件

    目录 1 题目 2 分析 3 实现 1 题目 从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存. 输入的字符串以!结束. 2 分析 写入 ...

  2. C语言经典例19-完数

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. 因子:假如整 ...

  3. C语言经典例79-字符串排序

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 字符串排序,输出三个字符串(长度小于20),并将其按照ASCII码顺序排序. 2 分析 首先限制三个字符串的输入,本例利用fgets函数,该 ...

  4. C语言经典例100-将学生成绩写入文件

    目录 1 题目 2 分析 3 实现 1 题目 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,把原有的数据和计算出的平均分数存放在磁盘文件&qu ...

  5. C语言经典例97-输入字符写入文件

    目录 1 题目 2 分析 3 实现 1 题目 从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止. 2 分析 关于文件操作,请看我的这篇文章 C语言-文件操作总结 . 3 实现 #incl ...

  6. C语言经典例11-斐波那契数列

    目录 1 题目 2 分析 3 实现 3.1 实现1(递归) 3.2 实现2(非递归) 4 运行结果 1 题目 古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 ...

  7. C语言经典例99-文件内容合并和排序

    目录 1 题目 2 分析 3 实现 1 题目 有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中. 2 分析 先把文件A和文件B的内容都读出来, ...

  8. C语言经典例96-计算字符串中子串出现的次数

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 计算字符串中子串出现的次数 2 分析 串的模式匹配在数据结构中有KMP算法,但这个算法实现起来繁琐,难度很大,所以对于一般来说,使用暴力法求 ...

  9. C语言经典例86-两个字符串连接

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 两个字符串连接,有字符串str1和str2,假设str1足够大,要求将str2连接到str1后面 2 分析 我们知道string.h中有字符 ...

最新文章

  1. 数据库修改,删除的操作必须有保险操作。
  2. 利用CSS让元素垂直居中的两种实现方法
  3. 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
  4. Android Studio-------添加按钮
  5. 《Pytorch - RNN模型》
  6. 内存分布malloc/calloc/realloc/free/new/delete、内存泄露、String模板、浅拷贝与深拷贝以及模拟string类的实现
  7. 单链表算法设计(含大厂面试题)
  8. Android Studio添加android.support.v4包的依赖(解决V4的FragmentManager的错误)
  9. 分布式锁是啥?对比下redis和zk两种分布式锁的优劣?
  10. java输出华氏摄氏温度转换表_输出华氏-摄氏温度转换表
  11. Excel实战之单元格合并与拆分
  12. 微博 php7,PHP_迁移PHP版本到PHP7,今天看到微博上说phpng也就是ph - phpStudy
  13. 关于注册校验和密钥生成软件问题
  14. 使用记账软件记录生活收支明细,如何防止收支不被他人修改
  15. 想要的资源百度搜不到?6个只有老师傅才知道的网站,悄悄领走
  16. linux查看openssl版本,debian – 如何区分安装的OpenSSL版本?
  17. 新松机器人通过c++离线编程接口库控制运动失败的100个注意事项
  18. 同步,异步,并行概念的歪解
  19. Nodejs安装及npm配置(超详细)
  20. 一加3T viper4android,哈曼卡顿Cortana智能音箱外观/内部规格全曝光

热门文章

  1. MVC自定义视图规则
  2. Bluetooth4.0
  3. Android 2.2 r1 API 中文文档系列(12) —— Button
  4. 并发Goroute、定时器、信号处理、单元测试
  5. 剑指offer-链表中倒数第K个结点
  6. iphone开发基础:loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法
  7. 大理,风花雪月俏丽金花
  8. 阿里云服务器ubuntu14.04安装Redis
  9. ExecutorService对象的shutdown()和shutdownNow()的区别
  10. 监听android 上的完成按键