首页 > 其他 > 详细

实验5-10 使用函数求余弦函数的近似值 (15point(s)) 需要重点注意 *和机试题目一毛一样

时间:2020-02-25 13:31:22      阅读:62      评论:0      收藏:0      [点我收藏+]

基本思想:

直接计算,和7-3思想差不多;

 

关键点:

才发现自己侥幸逃脱的一个坑点:这题隐含了一个高阶阶乘的问题,如果贸然使用int来计算阶乘,会出现溢出问题;

后续总结一下;

 

#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;

double factor(double x) {
    if (x <= 1.0)
        return 1.0;
    double sum = 1.0;
    while (x != 1.0) {
        sum *= x--;
    }
    return sum;
}

double mutiple(double x, double index) {
    if (index == 0.0)
        return 1.0;
    double sum = 1;
    while (index > 0.0) {
        sum *= x;
        index--;
    }
    return sum;
}

double funcos(double e, double x) {
    double sum = 0;
    double index = 0;
    while (1) {
        double fm = factor(0 + index * 2);
        double fz = mutiple(x, 0 + index * 2);
        double temp = fz / fm;
        if ((int)index % 2 == 0)
            sum += temp;
        else
            sum -= temp;
        index++;
        if (temp < e)
            break;
    }
    return sum;
}

int main() {
    double e, x;
    scanf("%lf %lf", &e, &x);
    printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
    return 0;
}

 

实验5-10 使用函数求余弦函数的近似值 (15point(s)) 需要重点注意 *和机试题目一毛一样

原文:https://www.cnblogs.com/songlinxuan/p/12360893.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!