阿Cxi 发表于 2021-1-9 14:24:44

关于函数嵌套

#include <stdio.h>
int main()
{
        int a(int x);
        int b(int y);
        int s;
        s=a(2)+a(3);
        printf("%d",s);
       
}
int a(int x)
{
        int i,c,d=1;
        int b(int y);
        for(i=b(c);i>0;i--)
        {
                d=d*i;
        }
        return(d);
}
int b(int y)
{
        y=y*y;
        return(y);
}
本题的目的是计算2的平方阶乘 加上3的平方阶乘,初次学习,实在没想清楚我错在哪了,希望大神指点指点,谢谢

qiuyouzhi 发表于 2021-1-9 14:35:55

没看懂你写的代码,我这里重写了一个逻辑比较清晰的,你可以看看:
# include <stdio.h>

int func(int n)
{
        int tmp = n * n, sum = 1;
        for (int i = 2; i <= tmp; i++)
        {
                sum *= i;
        }
        return sum;
}

int main()
{
        printf("%d", func(2) + func(3));
        return 0;
}

阿Cxi 发表于 2021-1-9 14:44:12

qiuyouzhi 发表于 2021-1-9 14:35
没看懂你写的代码,我这里重写了一个逻辑比较清晰的,你可以看看:

我的代码的意思是运用函数的嵌套,int b是求一个数的平方,int a是求一个数的阶乘,不知道这样解释你能明白了没{:5_96:},我感觉我求平方和阶乘的阶乘的函数都没有写错哎,不知道为什么这个代码最终运行结果是2而不是4*3*2*1+9*8*7.。。。*1

qiuyouzhi 发表于 2021-1-9 14:52:22

阿Cxi 发表于 2021-1-9 14:44
我的代码的意思是运用函数的嵌套,int b是求一个数的平方,int a是求一个数的阶乘,不知道这样解释你能明 ...

噢,发现问题了
看你的a函数,c是哪里来的?改成b(x)就好了
顺便说下,函数声明通常是在全局里面声明

jackz007 发表于 2021-1-9 14:56:54

#include <stdio.h>

int main(void)
{
      int a , b , i                                 ;
      for(a = i = 1 ; i < 2 * 2 + 1 ; i ++) a = a * i ; // 计算 2 的平方的阶乘
      for(b = i = 1 ; i < 3 * 3 + 1 ; i ++) b = b * i ; // 计算 3 的平方的阶乘
      printf("%d\n" , a + b)                        ;
}
页: [1]
查看完整版本: 关于函数嵌套