解题思路:
暴力的方法是写一个阶乘函数,从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 人评分
简洁的代码浏览:1408 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:593 |
Hello, world! (C语言代码)浏览:1196 |
C二级辅导-进制转换 (C语言代码)浏览:615 |
printf基础练习2 (C语言代码)浏览:941 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:603 |
1113题解浏览:784 |
Tom数 (C语言代码)浏览:525 |
字符逆序 (C语言代码)浏览:612 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:607 |