1-5软协作业
简单分享关于1-5软协作业中第三题的做法,希望在给有需要的同学提供一些帮助的同时,能收到来自大佬的意见,一定虚心听教,认真学习❤️❤️❤️。
题目:有如下表达式
s = 1 + 1 / 3 + (1 * 2) / (3 * 5) + (1 * 2 * 3) / (3 * 5 * 7) + .... + (1 * 2 * 3 * .... * n) / (3 * 5 * 7 * ... * (2 * n + 1))
。编写函数求给出的n所对应的表达式s的值。输出表达式的值,保留小数点后10位的值
示例 | n | s |
---|---|---|
1️⃣ | 1 | 1.0000000000 |
2️⃣ | 2 | 1.3333333333 |
分析:应注意第一项中n应该为0,且表达式中出现阶乘表达式,应重新定于一个函数用于表示,综上我们需要四个函数,一个主函数,一个s函数,两个有关连续相乘的函数a,b
代码
#include<stdio.h>
int a(int n) //n的阶乘函数
{
int m=1;
for (int i = 1;i <= n;i++)
m = m * i;
return m;
}
int b(int n) //n+2的阶乘函数
{
int m = 1;
for (int i = 3;i <=2* n + 1;i += 2)
m = m * i;
return m;
}
double s(int n)
{
double c;
if (n == 0) //n==0时,s(1)=1
c = 1;
else c = (double)a(n) / b(n) + s(n - 1); //调用a(n)b(n)计算第n项的值,再与前n项相加
return c;
}
int main()
{
int n;
printf("input n:");
scanf_s("%d",&n);
s(n); //调用s(n)
printf("result=%.10f",s(n)); //输出s(n)
return 0;
}
vs 运行结果
注意事项
1.保留10位小数的表达%.(保留小数位)(数据类型)
2.函数返回值的类型设置
3.运算中数据类型的转换
结语
最后最后,还是感谢软协学长学姐的努力,为大家创建了一个良好的学习平台,希望在接下来的日子里,大家能一起努力,共同进步