- 第一题
- 题目链接及简易描述
- 解题思路
- 代码
- 第二题
- 题目链接及简易描述
- 解题思路
- 代码
- 第三题
- 题目链接及简易描述
- 解题思路
- 代码
7-32 求交错序列前N项和
题目描述:
计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和,输出保留三位小数。
通过观察发现,分子可以通过 for 循环得到 如 1 2 3 4这样的递增序列,而分母是 2 * 分子 - 1,并且不是每项都加或减,而是奇数次加,偶数次减,而且要注意数据类型,我这是 2* 分子 + 1这边的2变成2.0,这样能利用隐式转换使得结果变成double类型,不然 / 是趋零取整,现在可以写代码了
代码#include第二题 题目链接及简易描述int main(void) { int x, i; double res; scanf("%d", &x); for (i = 1; i <= x; i++) { if (i % 2 == 1) { res += i / (2.0 * i - 1); } else { res -= i / (2.0 * i - 1); } } printf("%.3f", res); return 0; }
7-33 统计素数并求和
题目描述:
输入两个数,输出这两个数之间的素数个数和各个素数的和
编写一个函数判断素数,然后把两个数当作for的开始和结束,循环判断一次就行了
代码#include第三题 题目链接及简易描述int sushu(int); int main(void) { int l, r, cnt = 0, res = 0; scanf("%d %d", &l, &r); for (l; l<=r; l++) { if (sushu(l)) { cnt ++; res += l; } } printf("%d %d", cnt, res); } int sushu(int x) { if (x == 1) { return 0; } for (int i = 2; i * i <= x; i ++) { if (x % i == 0) { return 0; } } return 1; }
7-52 求简单交错序列前N项和
题目描述:
和第一题差不多,计算序列 1 - 1/4 + 1/7 - 1/10 + … 的前N项之和
差不多了额11111额1
代码#includeint main(void) { int x, i; double res; scanf("%d", &x); for (i = 1; i <= x; i++) { if (i % 2 == 1) { res += 1 / (3.0 * i - 2); } else { res -= 1 / (3.0 * i - 2); } } printf("sum = %.3f", res); return 0; }



