#include<stdio.h>
#include<math.h>
#define PI 3.1415926
double fact(int n)
{
if (n == 0)
return 1;
return fact(n - 1)*n;
}
int main()
{
double x, sum = 0, term = 1,h;
int n = 1, t = 1;
int T;
scanf("%d",&T);
while(T--){
scanf("%lf", &x);
h=x*PI/180;
while (term >= 0.000001) {
term = pow(h, 2 * n - 1) / fact(2 * n - 1);
sum += t * term;
t = -t;
n++;
}
printf("%.6lf\n", sum);
}
}
找错误,找错误,单次输入对,多次就不对
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- qzjhjxj 2022-11-18 14:20关注
修改如下,供参考:
#include <stdio.h> #include <math.h> #define PI 3.1415926 double fact(int n) { if (n == 0) return 1; return fact(n - 1) * n; } int main() { double x, sum = 0, term = 1, h; int n = 1, t = 1; int T; scanf("%d", &T); while (T--) { scanf("%lf", &x); h = x * PI / 180; sum = 0; term = 1; t = 1; n = 1; while (fabs(term) >= 0.000001) { term = pow(h, 2 * n - 1) / fact(2 * n - 1); sum += t * term; t = -t; n++; } printf("%.6lf\n", sum); } }
换种写法:
#include <stdio.h> #include <math.h> #define PI 3.1415926 int main() { double x, sum = 0, term = 1, h; int n = 1, t = 1; int T; scanf("%d", &T); while (T--) { scanf("%lf", &x); if (x <= 0 || x >= 180) continue; h = x * PI / 180.0; sum = h; term = h; t = -1; n = 1; while (fabs(term) >= 0.000001) { term *= h * h /((2 * n + 1) * 2 * n); sum += t * term; t = -t; n++; } printf("%.6lf", sum); if (T) printf("\n"); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 孟德尔随机化怎样画共定位分析图
- ¥18 模拟电路问题解答有偿速度
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址
- ¥15 elmos524.33 eeprom的读写问题