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
相关推荐
揽星河..2 小时前
【C语言】结构体
c语言·开发语言
唐青枫4 小时前
C 语言 malloc() 详解与实战 Demo
c语言
揽星河..7 小时前
【C语言】指针
c语言·开发语言
蹊黎1 天前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
爱聊灵光的维C1 天前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
AI+程序员在路上1 天前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
揽星河..1 天前
【C语言】扫雷游戏
c语言·算法·游戏
冻柠檬飞冰走茶1 天前
PTA刷题集之Airline Routes(C语言实现)
c语言·开发语言·数据结构·算法
冻柠檬飞冰走茶1 天前
PTA刷题集之Battle Over Cities - Hard Version(C语言实现)
c语言·开发语言·数据结构·算法
Lxx_Zw1 天前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
c语言·stm32·单片机·嵌入式硬件