C语言学习-菜鸟教程C经典100例-练习76

C语言学习-菜鸟教程C经典100例-练习76

题目

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


思路

  • 定义两个函数分奇偶数;
  • 使用指针根据n的奇偶性指向不同函数;
  • 调用函数指向相应的计算函数

代码

c 复制代码
#include <stdio.h>

double sum_even(int n); // 计算偶数序列和
double sum_odd(int n); // 计算奇数序列和

int main(){
    int n;

    printf("请输入一个正整数n :");
    scanf("%d", &n);

    if(n <= 0){
        printf("错误!请输入一个正整数!\n");
        return 1;
    }

    // 定义函数指针
    double (*sum_func)(int);

    // 根据n的奇偶性指向不同函数
    if(n%2 == 0){
        printf("n为偶数,计算:1/2 + 1/4 + ... + 1/n\n");
        sum_func = sum_even; // 指向偶数序列和函数
    }else{
        printf("n为奇数,计算:1/1 + 1/3 + ... + 1/n\n");
        sum_func = sum_odd; // 指向奇数序列和函数
    }
    
    // 调用函数
    double result = sum_func(n);

    printf("结果为:%.6f\n", result);

    return 0;
}

// 定义偶数序列和函数
double sum_even(int n){
    double sum = 0.0;

    for(int i=2; i<=n; i+=2){
        sum = sum + 1.0/i;
    }

    return sum;
}

// 定义奇数序列和函数
double sum_odd(int n){
    double sum = 0.0;

    for(int i=1; i<=n; i+=2){
        sum = sum + 1.0/i;
    }

    return sum;
}

输出结果

c 复制代码
请输入一个正整数n :2
n为偶数,计算:1/2 + 1/4 + ... + 1/n
结果为:0.500000

请输入一个正整数n :3
n为奇数,计算:1/1 + 1/3 + ... + 1/n
结果为:1.333333
相关推荐
LuminousCPP1 小时前
数据结构-双向循环链表
c语言·数据结构·笔记·链表
小僧景贤3 小时前
嵌入式C语言 第二篇:基础语法|嵌入式C与标准C的核心差异
c语言·开发语言·嵌入式c语言
wuyk5556 小时前
1.栈:后进先出的线性数据结构
c语言·数据结构·stm32·单片机
LuminousCPP7 小时前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode
带鱼吃猫7 小时前
预处理器:宏、运算符与条件编译
c语言·开发语言
(Charon)8 小时前
【C++】线程安全队列(二):生产者消费者模型与 condition_variable 阻塞等待
c语言·开发语言·c++
SunnyByte8 小时前
排序进阶:快速排序与归并排序的迭代实现,并与递归版本对比
c语言·数据结构·算法·排序算法
wuminyu10 小时前
JDK21解决虚拟线程IO阻塞原理剖析
java·linux·c语言·jvm·c++
MC皮蛋侠客12 小时前
TDengine C++ 系列(5):C/C++ 连接器——连接管理与查询 API
c语言·c++·tdengine
天空'之城12 小时前
C 语言工业级通用组件手写 27:配置参数管理组件
c语言·eeprom·参数管理·工业级组件·掉电存储