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
相关推荐
Dlrb12111 天前
C语言-指针三
c语言·算法·指针·const·命令行参数
kkeeper~1 天前
0基础C语言积跬步之深入理解指针(5下)
c语言·开发语言
三品吉他手会点灯1 天前
C语言学习笔记 - 40.数据类型 - scanf函数的编程规范与非法输入处理
c语言·开发语言·笔记·学习
♛识尔如昼♛1 天前
C 进阶(9) - 信号
c语言·信号
qeen871 天前
【算法笔记】各种常见排序算法详细解析(下)
c语言·数据结构·c++·笔记·学习·算法·排序算法
Legendary_0081 天前
解析 PD Sink 与 LDR6500U:Type-C 取电的核心密码
c语言·开发语言
basketball6161 天前
C++ 强制类型转换:从 C 风格到 C++ 四大金刚
java·c语言·c++
AI科技星1 天前
全域数学公理:基于32维超复数与易经卦爻的宇宙大一统理论(整理版)
c语言·开发语言·线性代数·量子计算·agi
LuminousCPP1 天前
数据结构 - 线性表第二篇:动态顺序表进阶接口实现
c语言·数据结构·笔记·顺序表·线性表
AI科技星2 天前
全域粒子质量几何曲率统一公式体系(通俗易懂版)
c语言·开发语言·网络·量子计算·agi