解题思路:
暴力的方法是写一个阶乘函数,从1到30调用函数,但是非常耗时。根据(n+1)! = n! * (n+1),可以定义一个i从1递增到30,定义一个变量保存更新后的阶乘,每更新一次就加到总和上,然后i++,这样就大大减轻了时间消耗。
注意事项:
阶乘和总和都要用double表示。
参考代码:
// 题目 1064: 二级C语言-阶乘数列 #include<iostream> using namespace std; int main() { int num = 30; // n的阶乘 int i = 1; // (n+1)! = n! * (n+1),此时i=n+1 double fact = 1; // 阶乘 double sum = 0; // 结果 while (num--) { fact *= i; sum += fact; i++; } printf("%.2e\n", sum); // 科学计数法(保留2位小数) return 0; }
0.0分
4 人评分
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:454 |
Pascal三角 (C语言代码)格式错误浏览:521 |
简单的a+b (C语言代码)浏览:340 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:510 |
a+b浏览:433 |
模拟计算器 (C++代码)浏览:807 |
矩阵转置 (C语言代码)浏览:784 |
上车人数 (C语言代码)浏览:713 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:573 |