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
相关推荐
2601_951643771 天前
Python第一,Java跌出前三,C语言杀回来了
java·c语言·python·编程语言排行·技术趋势
AI科技星1 天前
数术工坊 · 第四卷 橡皮泥江湖(拓扑学)【完整定稿】
c语言·开发语言·汇编·electron·概率论·拓扑学
AI科技星1 天前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
.道阻且长.1 天前
C++ string 操作指南:接口解析
java·c语言·开发语言·c++
2601_951645781 天前
如何优雅地使用c语言编写爬虫
c语言·爬虫·网络请求·字符串处理·cspider
6v6-博客1 天前
C语言字符串中空格的表示方法
c语言·开发语言
SHARK_pssm1 天前
【数据结构——树与堆】
c语言·数据结构·经验分享·笔记
郝学胜-神的一滴1 天前
CMake 017:彩色日志输出实战
linux·c语言·开发语言·c++·软件工程·软件构建·cmake
Navigator_Z2 天前
LeetCode //C - 1096. Brace Expansion II
c语言·算法·leetcode
luj_17682 天前
FreeDOS vs MS-DOS PC-DOS 对比解析
服务器·c语言·开发语言·经验分享·算法