c-函数指针(求奇数偶数的和)

 1 #include <stdio.h>
 2
 3 /*
 4 编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n,当输入 n 为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数).
 5 */
 6
 7 //1/2 + 1/4 +...+ 1/n;
 8 float
 9 even(int n) {
10     float sum = 0;
11     for(int i = 2; i <=n; i+=2)
12         sum += (float)1 / i;
13     return sum;
14 }
15
16 //1/1 + 1/3 +...+ 1/n;
17 float
18 odd(int n) {
19     float sum = 0;
20     for(int i = 1; i <= n; i+=2)
21         sum += (float)1/i;
22     return sum;
23 }
24
25 //函数指针为参数.
26 float
27 sum(float (*s)(int), int i) {
28     return (*s)(i);
29 }
30
31 // main函数调用
32 int main() {
33     int i;
34     printf("请输入一个正整数:");
35     scanf("%d", &i);
36     float s;
37     if(i % 2 == 0)
38         s = sum(even, i);
39     else
40         s = sum(odd, i);
41     printf("sum=%f", s);
42 }

ref: C语言函数指针基础

时间: 2024-07-29 00:57:46

c-函数指针(求奇数偶数的和)的相关文章

求奇数偶数的和,,利用while循环

static void Main(string[] args)        {             while (true)                {             try            {                                   Console.Write("请输入一个数:");                    int n = Convert.ToInt32(Console.ReadLine());          

C语言:通过函数指针来完成两个数的加减乘除

// //  main.c //  Function_pointer // //  Created by mac on 15/8/2. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:通过函数指针求两个整数的和.差.积.商. //知识点:函数指针就是一个指向函数的指针,通过指针指向要调用的函数来完成操作. //切记:要被调用的函数必须和函数指针的声明的一样(包括:返回值类型.参数个数和类型) #include <stdio.h

剑指offer_面试题14_调整数组顺序使奇数位于偶数前面(函数指针用法)

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 1.一般想法,不考虑时间复杂度: 每次遍历数组,碰到一个偶数就拿出来,将后面所有数字向前挪动一位,在将该偶数放到最后. 2.利用冒泡排序的思想,两个指针,一前以后,如果前为偶数,后为奇数,就交换. 算法如下: void Reorder_array(int p[],int length) { if(NULL == p || length <= 0) return; int i

编程题:返回指针值的函数,求两个数中较大的数。

#include<stdio.h> int *max(int *x,int *y) { int *q; if(*x>*y)  q=x; else  q=y; return q; } void main() { int a,b,*p; scanf("%d,%d",&a,&b); p=max(&a,&b); printf("%d,%d,max is %d\n",a,b,*p); } 编程题:返回指针值的函数,求两个数中较

编程算法 - 求1+2+...+n(函数指针) 代码(C++)

求1+2+...+n(函数指针) 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 求1+2+...+n, 要求不能使用乘除法\for\while\if\else\switch\case等关键字及条件判断语句(A?B:C). 可以使用函数指针求解, 通过递归调用, 每次递归值减1, 使用求反运算(!), 即非0为0, 0为1. 代码: /* * main.cpp * * Created on: 2014.7.12 * Author: sp

java代码:用for循环求和,求偶数和,求奇数和,打印水仙花数,统计水仙花数

用for循环求和,求偶数和,求奇数和,打印水仙花数,统计水仙花数package loop; public class For1 {public static void main(String[] args) {int sum=0;for(int x=0;x<=100;x++) {sum=sum+x;}System.out.println("100以内(含100)整数和:"+sum);System.out.println("------------------------

函数指针问题,求解答

代码中给函数指针赋值的 语句1.2.3  以及用函数指针调用函数的 语句a.b 运行结果都正确,到底哪个才是正确的呢??? #include<stdio.h> int add(int a,int b){ return a+b; } int main() { int (*p)(int,int); int sum; p = add; //语句1 // p = &add; //语句2 // p = *add; //语句3 sum = p(1,2); //语句a // sum = (*p)(a

成员函数指针与高性能的C++委托

成员函数指针与高性能的C++委托(上篇) 撰文:Don Clugston 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托 (delegate)")在一些语言中已经证明了它宝贵的价值.在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础.而在目前,C#使"委托&

2767: 指针引出奇数因子

2767: 指针引出奇数因子 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1153  Solved: 709[Submit][Status][Web Board] Description 编写函数 int fun(int x, int *pp).其功能是,求出x的所有奇数因子,并按照从小到大的顺序放在pp指向的内存中,函数返回值为这些整数的个数.若x的值为30,数组中的数为1,3,5,15,函数返回4.用下面的main()函数进行测试: 提交时提