基本思想:
直接计算,和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