c语言练习题之——从简单到烧脑(5)(每日两道)

今天写的是函数的复杂使用

在函数中连续嵌套函数,关联多个函数完成一个功能。

题目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;
}
 
 
  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值