C语言:利用指针编写程序,用梯形法计算给定的定积分实例

题目要求

利用指针编写程序,用梯形法计算下列公式中的定积分:

参考代码

首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数。

请注意calc()函数中的这一语句:

double(*pfunction)() = &function;

即实现了我所描述的过程。

代码如下:

#include <stdio.h>
#include <math.h>

double function(double x){
  return (double)(pow(x,3) + x/2 + 1);
}

double calc(double a, double b){
  double ha, hb, result=0;
  int i;
  double(*pfunction)() = &function;
  for(i=0; i<1000; i++){
    ha = (*pfunction)(a+i*(b-a)/1000.0);
    hb = (*pfunction)(a+(i+1)*(b-a)/1000.0);
    result += ((ha + hb)*(b-a)/1000.0)/2.0;
  }
  return result;
}

void main(){
  double a = 0, b = 10, result;
  result = calc(a, b);
  printf("%lf", result);
}

运行结果

【输出】

2535.002500

与实际值2535并无太大差距。若想提高精确度可进一步提高微元分段的数量。

以上这篇C语言:利用指针编写程序,用梯形法计算给定的定积分实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C语言求解定积分的方法

    本文实例为大家分享了C语言求解定积分的具体方法,供大家参考,具体内容如下 题目要求: 求下面函数的定积分: 思路: 求一个函数的定积分,其实就是求它的面积,如对函数 求积分. 也就是要求出绿色部分的面积,如下: 我们可以通过矩形的方法来无限逼近定积分的求解,如下: 因为被分成n等分,就可以认为每一等分是一个矩形,那么每一矩形的面积为: 每一个矩形面积为:***Sn=f(x)(b-a)/n 总面积为:****S=S1+S2+-+Sn 通过这样的一个思路就可以完成,定积分的求解. 这样这三个定积分的

  • C语言实现黎曼和求定积分

    本文实例为大家分享了C语言程序实现黎曼和求定积分,供大家参考,具体内容如下 通过黎曼和解定积分既是把在xy平面中函数曲线与x轴区间区域划分成多个矩形并求它们的面积之和,矩形数量越多,得出的面积越精确. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> int main(){ float function1(float); //函数f(x)1 float f

  • C语言实现求定积分的方法

    本文实例讲述了C语言实现求定积分的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: #include <cmath>  #include <cstdio> #define ACC 1000 float solve(float (*p)(float),float up,float down,int acc); float fun_exp(float x); float fun_qua(float x); void main(){ char selection; f

  • C语言使用矩形法求定积分的通用函数

    本文为大家分享了C语言使用矩形法求定积分的通用函数,供大家参考,具体内容如下 要求: 写一个用矩形法求定积分的通用函数,分别求:sin(x),cos(x),e^x . 分析: 矩形法,学过高等数学就知道化曲为直的思想.将定积分化为多个函数连续的和.基本思想是将区间[a,b]化成n等分,当n越大的时候结果越准确.图形化成一小块一小块的矩形.底边长都为(b-a)/n.高为每个等分点的函数值.然后将每个矩形的面积相加即为所求. 如: y=x; 可以通过矩形的方法来无限逼近定积分的求解,如下: 因为被分

  • C语言:利用指针编写程序,用梯形法计算给定的定积分实例

    题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: 参考代码 首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数. 请注意calc()函数中的这一语句: double(*pfunction)() = &function; 即实现了我所描述的过程. 代码如下: #include <stdio.h> #include <math.h> double function(double x){ return (double)(

  • 利用Java编写一个出敬业福的小程序

    目录 1.前言 2.定义工具类 3.生成"福"主类 4.运行测试 5.素材图片 1.前言 “福”的由来: 姜太公封一大批神仙时,却把自己的妻子叶氏封为穷神,还告诉她说:“有福的地方,你不能去.”从此,家家过年贴福字,就是告诉穷神,我这里是有福的地方,你千万不能进来.福字,就是摆脱穷困.追求幸福的象征. 福字之所以倒贴,传说起于清代恭亲王府.那年春节前夕,大管家按例写了几个斗大的“福”字,叫人贴于王府的大门上.有个家丁目不识丁,竟将“福”字头朝下贴上.恭亲王福晋十分气恼,欲鞭罚惩戒.可这

  • C语言利用面试真题理解指针的使用

    目录 前言 笔试题一 笔试题二 笔试题三 笔试题四 笔试题五 笔试题六 笔试题七 笔试题八 前言 大家好~我又来了,今天给大家带来的是指针的几道笔试题,希望能够加强大家对指针知识的把握,指针就应该这样学! 笔试题一 #include<stdio.h> int main() { int a[5] = { 1 , 2 , 3 , 4 , 5 }; int* ptr = (int*) (&a + 1); printf("%d, %d", *(a + 1), *(ptr -

  • C语言函数指针的老生常谈

    目录 函数指针 函数指针的应用 函数指针作为参数实例(qsort函数) 总结 函数指针 本质上是一个指针,只不过指向函数而已. 编译器在编译期间对函数开辟了一块空间,而这快空间的开始地址,就是它的函数指针 . 下面我们也直接用最直观的程序来了解函数指针: #if 1 void func() { printf("hello ptr!"); } int main() { void (*p)(); p = func; p(); } #endif 在这里我们给出了func()函数,并在其中打印

  • C语言基础指针详解教程

    目录 1.1:概述 1.1.1:内存 1.1.2:内存 1.1.3:指针和指针变量 1.2:指针基础知识 1.2.1:指针变量的定义和使用 1.2.2:通过指针间接修改变量的值 1.2.3:指针的大小 1.2.4:空指针与野指针 1.2.4:万能指针 1.2.5:const修饰的指针变量 1.3:指针与数组 1.3.1:数组名 1.3.2:指针操作数组 1.3.3:指针的加减运算 1.3.4:指针数组 1.4:指针基础小结 1.5:结语 1.1:概述 1.1.1:内存 内存含义: 储存器:用来存

  • 嵌入式C语言二级指针在链表中的应用

    目录 重读了两本书:Stephen A.Maguire的<编程精粹:Microsoft编写优质无错C程序秘诀>和David R. Hanson的<C语言接口与实现:创建可重用软件的技术>.两本书都有对链表的操作. 假设有如图所示的链表,链表节点的pb成员指向一个缓冲块,删除节点函数根据缓冲块的首地址,找到节点并删除节点: <编程精粹>使用一个变量pbiPrev来保存前一个节点位置,并且要处理删除的是第一个节点A这种边界条件: void FreeBlockInfo(byt

  • 利用Python编写的实用运维脚本分享

    目录 1. 执行外部程序或命令 2. 文件和目录操作(命名.删除.拷贝.移动等) 3. 创建和解包归档文件 参考 Python在很大程度上可以对shell脚本进行替代.笔者一般单行命令用shell,复杂点的多行操作就直接用Python了.这篇文章就归纳一下Python的一些实用脚本操作. 1. 执行外部程序或命令 我们有以下C语言程序cal.c(已编译为.out文件),该程序负责输入两个命令行参数并打印它们的和.该程序需要用Python去调用C语言程序并检查程序是否正常返回(正常返回会返回 0)

  • C语言实现通讯录系统程序

    本文实例为大家分享了C语言实现通讯录系统程序的具体代码,供大家参考,具体内容如下 前言 利用链表增.删.改.查功能以及文件来完成通讯录系统.通讯录中包含联系人的基本信息:姓名.联系电话.家庭住址以及电子邮件. 以下是设计该系统的步骤: 1.导出通讯录系统的功能: (构建一个通讯录结构体) #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h>  /*定义通讯录结构体*

  • C语言的指针类型详细解析

    指针存储了内存的地址,同时指针是有类型的,如int*,float*,那么,一个自然的猜想就是指针变量应该存储这两方面的信息:地址和指针类型,比如,就像下面的结构体: 复制代码 代码如下: struct pointer{    long address;    int type;} 举个例子:打印sizeof(int*),值为4,可见4字节是存储内存地址用的,反过来就说明指针并没有存储类型信息的地方,那么指针的类型信息存放在哪儿呢?下面剖析一段简单的代码. 复制代码 代码如下: // ma.cpp

  • C语言 数组指针详解及示例代码

    数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element).数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存.以int arr[] = { 99, 15, 100, 888, 252 };为例,该数组在内存中的分布如下图所示: 定义数组时,要给出数组名和数组长度,数组名可以认为是一个指针,它指向数组的第 0 个元素.在C语言中,我们将第 0 个元素的地址称为数组的首地址.以上面的数组为例,下图是 arr 的指向: 下面的例子演示了如何以指针的方

随机推荐