风过无痕1989 发表于 2020-7-16 22:50:37

函数嵌套问题求教

//给出一个正整数,求小于等于该正整数的所有自然数的平方数的阶乘之和
#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:08:38

代码辣眼睛

bin554385863 发表于 2020-7-16 23:24:54

本帖最后由 bin554385863 于 2020-7-16 23:49 编辑

吧代码好好写一下啊,眼疼,

风过无痕1989 发表于 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;
      
}

bin554385863 发表于 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;
}

风过无痕1989 发表于 2020-7-16 23:53:23

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

感谢兄弟! 初学,为了多练习,自己写代码,而不调用 math 里的函数 pow()

风过无痕1989 发表于 2020-7-17 00:01:45

永恒的蓝色梦想 发表于 2020-7-16 23:08
代码辣眼睛

谢谢版主,能帮将前两天发的程序给删除掉吗?那个问题我已经自己弄懂了,不需要求助了。可是那个问题现在还挂在审核中,每次打开都有提示。我也没有搞明白,为什么那个问题需要审核,请帮我看看,给我一个答复,以免以后再犯错,遭到审核。谢谢! 谢谢!!

永恒的蓝色梦想 发表于 2020-7-17 07:40:21

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

我不是这个板块的版主啊

风过无痕1989 发表于 2020-7-17 10:42:51

永恒的蓝色梦想 发表于 2020-7-17 07:40
我不是这个板块的版主啊

谢谢你的回复,快乐每一天!
页: [1]
查看完整版本: 函数嵌套问题求教