阅读背景:

C语言学习Day19

来源:互联网 

梯形积分法串行代码的实现:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <math.h>
#define MAXN 30
double fun1(double x);
double fun2(double x);
double fun3(double x);
double Definite_integral(double a, double b, double (*p)(double x));

int main()
{
    int c = 1;
    double a, b;
    char d = '0';
    printf("*************************************\n");
    printf("*****  用梯形积分串行算法     *******\n");
    printf("*****   1、函数为:y = x      *******\n");
    printf("*****   2、函数为:y = x^2    *******\n");
    printf("*****   3、函数为:y = sin(x) *******\n");
    printf("*************************************\n");

    while (0 != c) {
        printf("请输入您要选择的类型:");
        scanf("%d",&c);

        switch (c)
        {
        case 1:
            printf("请输入积分上下限(以空格隔开):>");
            scanf("%lf %lf",&a,&b);
            printf("该函数在%lf-%lf上的积分值为:》%lf\n", a, b, Definite_integral(a, b, fun1));
            break;
        case 2:
            printf("请输入积分上下限(以空格隔开):>");
            scanf("%lf %lf",&a,&b);
            printf("该函数在%lf-%lf上的积分值为:》%lf\n", a, b, Definite_integral(a, b, fun1));
            break;
        case 3:
            printf("请输入积分上下限(以空格隔开):>");
            scanf("%lf %lf",&a,&b);
            printf("该函数在%lf-%lf上的积分值为:》%lf\n", a, b, Definite_integral(a, b, fun1));
            break;
        default:
            printf("您的输入有误,您的选择只能是:1、2、3、0,请重新输入!\n");
            break;
        }

        printf("您还要继续选择吗?(1/0):>");
        scanf("%d",&c);
    }
    printf("程序结束,欢迎下次再来!");

    return 0;
}
/* 梯形法求定积分*/
double Definite_integral(double a, double b, double (*p)(double x)) {
    int i, n = MAXN;
    double x, y1, y2, deta, f;
    deta = (b - a) / n;
    x = a;
    y1 = (*p)(x);
    f = 0;
    for (i = 0; i < n; i++) {
        x += deta;
        y2 = (*p)(x);
        f += (y1 + y2) * deta / 2;
        y1 = y2;
    }
    return f;
}
/*定义被积函数,三种供选择*/
double fun1(double x) {
    double fx;
    fx = x;
    return fx;
}
double fun2(double x) {
    double fx;
    fx = x * x;
    return fx;
}
double fun3(double x) {
    double fx;
    fx = sin(x);
    return fx;
}
#define _CRT_SECURE_NO_WARNINGS 



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: