今天写的是函数的复杂使用
在函数中连续嵌套函数,关联多个函数完成一个功能。
题目1:通过阶乘计算来获取两个数的阶乘和的比值,并输出结果
//复杂函数调用
#include<stdio.h>
float p(long i) //计算i的阶乘并返回其浮点数
{
long k = 1, j;//k初始化为1,用于累计阶乘的结果
for (j = 1; j <= i; j++)
{
k = k * j;
}//k的值以浮点数返回
return ((float)(k));
}
float s(long n)//计算从i到n的所有整数的阶乘和
{
float sum = 0.0;//sum初始化用于累计阶乘的和
long k;
for (k = 1; k <= n; k++)
{
sum += p(k);//k用于递归调用,传参到p的函数里
}
return sum;
}
float f(long x, long y)//计算x和y传到s函数里面然后返回的值
{
float f1;
f1 = s(x) / s(y);
return f1;
}
int main()
{
long x, y;
scanf_s("%ld%ld",&x,&y);
printf("f(x,y)=%.1f\n",f(x,y));
return 0;
}
题目2:计算s=(1*1)!+(2*2)!+(3*3)!+....+(6*6)!的值
#include<stdio.h>
//计算函数的阶乘
long fun(long n)
{
long result = 1;//存储阶乘的结果
long i;//循环控制变量
for (i = 1; i <= n; i++)
{
result *= i;
}
return result;
}
//计算表达式的总和
long fun_sum(void)
{
long sum = 0;
long i, term;//存放每次相乘的值
for (i = 1; i <= 6; i++)
{
term = i * i;
sum += fun(term);//传入fun函数累乘,再返回,再累加,最后返回给主函数
}
return sum;
}
int main(void)
{
long sum;
sum = fun_sum();//主函数中的sum变量接受到主函数返回的值
printf("s=%ld\n",sum);//最后输出
return 0;
}