鱼C论坛

 找回密码
 立即注册
查看: 723|回复: 8

[已解决]函数嵌套问题求教

[复制链接]
发表于 2020-7-16 22:50:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//给出一个正整数,求小于等于该正整数的所有自然数的平方数的阶乘之和
#include<stdio.h>
int main()
{
     int square(int m,int n);
         int factorail(int x);
         int i,j,m,n,sum;
     scanf("%d,%d\n",&m,&n);
     sum = 0;
         for (i = 2;i <= m;i++)
         {
     sum = sum + factorail( int square(int m,int n) );
         }
     printf("%d 的 %d 次方的阶乘是:%d\n",m,n,sum);
}


int square(int m,int n)
{
        int j,x,p;
        x = m;
        p = x;
    for (j = 1;j < n;j++)
        {
    p = p * x;
        }
        return p;
}

int factorail(int x)
{
        int p,y;
    y = p;
        while(x != 2)
        {
        y = y * x;
        x--;
        }
                return y;

}

       编译时出现两个错误,都是嵌套调用那一行:1、error C2143: syntax error : missing ')' before 'type'   ;2、error C2198: 'factorail' : too few actual parameters
       请教如何修改程序,谢谢!
最佳答案
2020-7-16 23:50:00
看看这个是不是你要的结果?
计算指数可以用math.h头文件的pow(底数,次数)
//给出一个正整数,求小于等于该正整数的所有自然数的平方数的阶乘之和
#define intll long long
#include <stdio.h>
//阶乘函数
intll fact(intll num)
{
    intll result = 1;
    if (num < 0)
    {
        result = 0;
    }
    else if (num > 0)
    {
        for (intll i = 1; i <= num; i++)
        {
            result *= i;
        }
    }
    return result;
}
//计算小于等于num所有自然数的平方的阶乘累加值
intll sum_fact(intll num)
{
    intll result = 0;
    if (num >= 0)
    {
        for (size_t i = 0; i <= num; i++)
        {
            result += fact(i*i);
        }
    }
    return result;
}
int main(int argc, char const *argv[])
{
    printf("%lld", sum_fact(2));
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-16 23:08:38 | 显示全部楼层
代码辣眼睛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-16 23:24:54 | 显示全部楼层
本帖最后由 bin554385863 于 2020-7-16 23:49 编辑

吧代码好好写一下啊,眼疼,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-16 23:35:10 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-10-25 22:32 编辑
//给出一个正整数,求小于等于该正整数 m 的所有自然数的 n 次方数的阶乘之和
#include<stdio.h>
int main()
{
        int square(int m,int n);               // 定义求N次方函数
        int factorail(int x);                      // 定义求阶乘函数
        int i,k,m,n;
        double sum = 0;
        scanf("%d%d",&m,&n);

        for(i = 1;i <= m;i++)
        {
              k = square(i,n);                    // 求 m 的 n 次方
              sum = sum + factorail(k);     // 嵌套调用求N次方的阶乘函数
        }
        printf("%d 的 %d 次方的阶乘和是:%lf\n",m,n,sum);
}


int square(int m,int n)
{
        int j,p = 1;
        for (j = 1;j <= n;j++)
        {
            p *= m;
        }
        return p;
}

int factorail(int x)
{
        int j,y = 1.0;
        for(j = 1;j <= x;j++)
        {
            y *= j;
        }
        return y;
       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-16 23:50:00 | 显示全部楼层    本楼为最佳答案   
看看这个是不是你要的结果?
计算指数可以用math.h头文件的pow(底数,次数)
//给出一个正整数,求小于等于该正整数的所有自然数的平方数的阶乘之和
#define intll long long
#include <stdio.h>
//阶乘函数
intll fact(intll num)
{
    intll result = 1;
    if (num < 0)
    {
        result = 0;
    }
    else if (num > 0)
    {
        for (intll i = 1; i <= num; i++)
        {
            result *= i;
        }
    }
    return result;
}
//计算小于等于num所有自然数的平方的阶乘累加值
intll sum_fact(intll num)
{
    intll result = 0;
    if (num >= 0)
    {
        for (size_t i = 0; i <= num; i++)
        {
            result += fact(i*i);
        }
    }
    return result;
}
int main(int argc, char const *argv[])
{
    printf("%lld", sum_fact(2));
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-16 23:53:23 | 显示全部楼层
bin554385863 发表于 2020-7-16 23:50
看看这个是不是你要的结果?
计算指数可以用math.h头文件的pow(底数,次数)

感谢兄弟! 初学,为了多练习,自己写代码,而不调用 math 里的函数 pow()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-17 00:01:45 | 显示全部楼层

谢谢版主,能帮将前两天发的程序给删除掉吗?那个问题我已经自己弄懂了,不需要求助了。可是那个问题现在还挂在审核中,每次打开都有提示。我也没有搞明白,为什么那个问题需要审核,请帮我看看,给我一个答复,以免以后再犯错,遭到审核。谢谢! 谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 07:40:21 | 显示全部楼层
风过无痕1989 发表于 2020-7-17 00:01
谢谢版主,能帮将前两天发的程序给删除掉吗?那个问题我已经自己弄懂了,不需要求助了。可是那个问题现在 ...

我不是这个板块的版主啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-17 10:42:51 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-17 07:40
我不是这个板块的版主啊

谢谢你的回复,快乐每一天!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 09:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表