做美容美容院网站的费用网络营销策划论文
目前主要分为三个专栏,后续还会添加:
专栏如下: C语言刷题解析 C语言系列文章 我的成长经历
感谢阅读!
初来乍到,如有错误请指出,感谢!
描述
牛牛准备继续进阶,计算更难的数列
输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))的值
输入描述:
输入一个整数
输出描述:
输出一个浮点数,保留3位小数
题目解析 :
数列的公式是:
1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))
这个数列的每一项可以看作是一个分数,分子是1,分母是一个由奇数构成的序列,奇数的符号取决于项的位置是奇数还是偶数。具体来说:
- 当项的位置是奇数时,分母是正的奇数。
- 当项的位置是偶数时,分母是负的奇数。
因此,第k项可以表示为:
代码 1 :
别被难住了,分母看上去很长的样子,但如果我们仔细看,就会发现是 1-1/2+1/3这样,既然如此那代码就很简单了。
#include<stdio.h>
#include<math.h>
int main()
{int i = 0;double sum = 0;double q = 2.0;scanf("%d",&i);for(double j = 1;j<=i;j++){if(fmod(j, q) !=0){sum += (1/j);}elsesum -= (1/j);}printf("%.3lf\n",sum);return 0;
}
代码 2 :
//仔细观察不难发现分母其实是有规律的,我们不妨设一个变量来表示不断变化的分母
#include<stdio.h>
int main()
{int n,denominator=0,i;float sum=0;scanf("%d",&n);for (i=1;i<=n;i++){i%2==0?(denominator-=2*i-1):(denominator+=2*i-1);sum+=1.0/denominator;}printf("%.3f\n",sum);return 0;
}
代码 3 :
#include <stdio.h>// 函数用于计算数列的第k项
double sequence_term(int k) {// 根据k的奇偶性,交替使用正负号double sign = (k % 2 == 0) ? 1 : -1;// 计算第k项的分母,即(2k-1)double denominator = sign * (2 * k - 1);// 返回第k项的值,分子是1return 1.0 / denominator;
}// 函数用于计算数列的和
double calculate_sequence_sum(int n) {double sum = 0.0; // 用于累加数列的和for (int k = 1; k <= n; ++k) {// 计算第k项,并累加到总和中sum += sequence_term(k);}return sum;
}int main() {int n;// 读取用户输入的整数nprintf("请输入一个整数n:");scanf("%d", &n);// 计算数列的和double sum = calculate_sequence_sum(n);// 输出结果,保留三位小数printf("数列的和为:%.3f\n", sum);return 0; // 程序结束
}
代码 4 :
#include<stdio.h> // 引入标准输入输出库
#include<math.h> // 引入数学库,这里实际上不需要math.hint main() {int i = 0; // 声明一个整型变量i,用于存储项数double sum = 0; // 声明一个双精度浮点数变量sum,用于累加数列的和double q = 2.0; // 声明一个双精度浮点数变量q,实际上这里q的值应该是2,不需要是浮点数scanf("%d", &i); // 从标准输入读取一个整数,存储在变量i中for(double j = 1; j <= i; j++) { // 开始一个for循环,从1迭代到i// 修正逻辑:直接检查j是否为奇数,而不是使用fmodif((int)j % 2 != 0) { // 如果j是奇数sum += 1 / j; // 累加正项} else { // 如果j是偶数sum -= 1 / j; // 累加负项}}printf("%.3lf\n", sum); // 打印结果,保留三位小数return 0; // 程序执行成功,返回0
}
知识点:pow函数
详见这篇文章
牛客网刷题 | BC83 牛牛学数列-CSDN博客
数列和序列:理解数列的概念,即一系列按照一定规律排列的数。
数学公式解析:解析给定的数学公式,并理解其数学意义。
条件表达式:使用条件表达式来确定数列中各项的符号,这涉及到奇偶性判断。
循环结构:使用循环结构来遍历数列的每一项,计算其值。
函数调用:在C语言中,使用 pow
函数来计算幂运算。
类型转换:在C语言中,进行类型转换以确保数学表达式中运算的准确性,例如,确保在进行除法运算时,至少有一个操作数是 double
类型。
输入输出操作:使用 scanf
进行输入操作,使用 printf
进行输出操作。
浮点数精度:处理浮点数时,理解精度问题,以及如何使用 %.3f
格式化输出来保留三位小数。
算法逻辑:设计算法来计算数列的和,这需要对数列的规律有清晰的认识。
代码结构:理解C语言的基本结构,包括函数定义、循环、条件语句等。
数学规律:识别并利用数学规律简化计算过程,例如,通过观察可以发现数列的符号交替出现,分母是递增的奇数。