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
相关推荐
leo_messi941 天前
多线程(五) -- 并发工具(二) -- J.U.C并发包(八) -- CompletableFuture组合式异步编程
android·java·c语言
jie188945758661 天前
c语言------
c语言·开发语言
AI+程序员在路上1 天前
Linux C 条件变量阻塞线程用法:等待时CPU占用率为0
linux·运维·c语言
jimy11 天前
C语言实现-----面向对象编程
c语言·数据结构
不爱吃糖的程序媛1 天前
鸿蒙PC tiny-AES-c三方库适配实践
c语言·华为·harmonyos
HABuo1 天前
【linux线程(三)】生产者消费者模型(条件变量阻塞队列版本、信号量环形队列版本)详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
bestblueheart1 天前
C语言怎么学?系统学习路线图分享
c语言·指针·计算机基础·学习路线·编程思想
RFCEO1 天前
C语言逆向学习基础课 第1课:数组越界与指针操作基础陷阱
c语言·解引用校验·safe_free宏·悬空指针
计算机安禾1 天前
【数据结构与算法】第23篇:树、森林与二叉树的转换
c语言·开发语言·数据结构·c++·线性代数·算法·矩阵
计算机安禾2 天前
【数据结构与算法】第24篇:哈夫曼树与哈夫曼编码
c语言·开发语言·数据结构·c++·算法·visual studio