鱼C论坛

 找回密码
 立即注册
查看: 581|回复: 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(底数,次数)
  1. //给出一个正整数,求小于等于该正整数的所有自然数的平方数的阶乘之和
  2. #define intll long long
  3. #include <stdio.h>
  4. //阶乘函数
  5. intll fact(intll num)
  6. {
  7.     intll result = 1;
  8.     if (num < 0)
  9.     {
  10.         result = 0;
  11.     }
  12.     else if (num > 0)
  13.     {
  14.         for (intll i = 1; i <= num; i++)
  15.         {
  16.             result *= i;
  17.         }
  18.     }
  19.     return result;
  20. }
  21. //计算小于等于num所有自然数的平方的阶乘累加值
  22. intll sum_fact(intll num)
  23. {
  24.     intll result = 0;
  25.     if (num >= 0)
  26.     {
  27.         for (size_t i = 0; i <= num; i++)
  28.         {
  29.             result += fact(i*i);
  30.         }
  31.     }
  32.     return result;
  33. }
  34. int main(int argc, char const *argv[])
  35. {
  36.     printf("%lld", sum_fact(2));
  37.     return 0;
  38. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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 编辑

  1. //给出一个正整数,求小于等于该正整数 m 的所有自然数的 n 次方数的阶乘之和
  2. #include<stdio.h>
  3. int main()
  4. {
  5.         int square(int m,int n);               // 定义求N次方函数
  6.         int factorail(int x);                      // 定义求阶乘函数
  7.         int i,k,m,n;
  8.         double sum = 0;
  9.         scanf("%d%d",&m,&n);

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


  17. int square(int m,int n)
  18. {
  19.         int j,p = 1;
  20.         for (j = 1;j <= n;j++)
  21.         {
  22.             p *= m;
  23.         }
  24.         return p;
  25. }

  26. int factorail(int x)
  27. {
  28.         int j,y = 1.0;
  29.         for(j = 1;j <= x;j++)
  30.         {
  31.             y *= j;
  32.         }
  33.         return y;
  34.       
  35. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-16 23:50:00 | 显示全部楼层    本楼为最佳答案   
看看这个是不是你要的结果?
计算指数可以用math.h头文件的pow(底数,次数)
  1. //给出一个正整数,求小于等于该正整数的所有自然数的平方数的阶乘之和
  2. #define intll long long
  3. #include <stdio.h>
  4. //阶乘函数
  5. intll fact(intll num)
  6. {
  7.     intll result = 1;
  8.     if (num < 0)
  9.     {
  10.         result = 0;
  11.     }
  12.     else if (num > 0)
  13.     {
  14.         for (intll i = 1; i <= num; i++)
  15.         {
  16.             result *= i;
  17.         }
  18.     }
  19.     return result;
  20. }
  21. //计算小于等于num所有自然数的平方的阶乘累加值
  22. intll sum_fact(intll num)
  23. {
  24.     intll result = 0;
  25.     if (num >= 0)
  26.     {
  27.         for (size_t i = 0; i <= num; i++)
  28.         {
  29.             result += fact(i*i);
  30.         }
  31.     }
  32.     return result;
  33. }
  34. int main(int argc, char const *argv[])
  35. {
  36.     printf("%lld", sum_fact(2));
  37.     return 0;
  38. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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-4-28 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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