题目描述
输入一个正数x和一个正整数n,求下列算式的值。要求定义两个调用函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double。
x - x2/2! + x3/3! + ... + (-1)n-1xn/n!
×输出保留4位小数。
输入格式
x n
输出格式
数列和
样例输入
2.0 3
样例输出
1.3333
代码解析
-
定义
fact
函数:fact(int n)
函数用于计算一个整数n
的阶乘。它通过一个for
循环来累乘从1到n
的所有整数,并将结果存储在sum
变量中。最后,返回计算得到的阶乘值。double fact(int n) { double sum = 1; for (int i = 1; i <= n; i++) { sum = sum * i; } return sum; }
-
定义
mypow
函数:mypow(double x, int n)
函数用于计算x
的n
次幂的近似值。它使用了一个for
循环,从1遍历到n
,每次迭代中计算(-1)^(i-1) * x^i / fact(i)
的值,并累加到sum
变量中。这里,pow(-1, i - 1)
用于生成交替的正负号,pow(x, i)
用于计算x
的i
次幂,fact(i)
用于计算i
的阶乘,用于分母的计算。最后,返回累加的sum
值作为x
的n
次幂的近似值。double mypow(double x, int n) { double sum = 0; for (int i = 1; i <= n; i++) { sum = sum + (pow(-1, i - 1) * pow(x, i) / fact(i)); } return sum; }
-
主函数
main
:int main(void)
是程序的入口点。在这个函数中,首先通过scanf
函数读取用户输入的两个值:一个是双精度浮点数x
,另一个是整数n
。int main(void) { double x; int n; scanf("%lf%d", &x, &n); }
-
调用
mypow
函数并输出结果: 调用mypow
函数,传入用户输入的x
和n
作为参数,计算x
的n
次幂的近似值。使用printf
函数输出mypow
函数返回的结果,格式化为保留四位小数的浮点数。文章来源:https://www.toymoban.com/news/detail-850140.htmlprintf("%.4lf",mypow(x,n));
-
函数返回:
return 0;
表示main
函数执行成功并返回0。在C语言中,main
函数的返回值通常用于表示程序的退出状态,其中0表示成功。文章来源地址https://www.toymoban.com/news/detail-850140.htmlreturn 0;
源代码
#include <stdio.h>
#include <math.h>
double fact(int n)
{
double sum = 1;
for (int i = 1; i <= n; i++)
{
sum = sum * i;
}
return sum;
}
double mypow(double x, int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
{
sum = sum + (pow(-1, i - 1) * pow(x, i) / fact(i));
}
return sum;
}
int main(void)
{
double x;
int n;
scanf("%lf%d", &x, &n);
printf("%.4lf",mypow(x,n));
return 0;
}
到了这里,关于C语言题目:阶乘数列求和(函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!