鱼C论坛

 找回密码
 立即注册
查看: 602|回复: 4

[已解决]C语言程序,求所有阶乘和数

[复制链接]
发表于 2019-9-30 17:13:54 | 显示全部楼层 |阅读模式

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

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

x
long jc(int x)
{
   int i ; long p = 1;
for(i = 1;  i  <= x; i++)
    p  *=i;
return (p);
}
#include <stdio.h>
int main()
{
int a,b,c,d,e,f,g;
long m1, m2, m3, m4, m5, m6, n1, n2, n3, n4, n5, n6;
printf("所有阶乘和数有: ");
for(a=1;a<=9;a++)
{if(a=jc(a))
printf("%ld", a);
for(b=0;b<=9;b++)
{
m1=a*10+b;n1= jc(a)+jc(b);
if(m1==n1)
printf("%ld ", m1);
for(c = 0;c<=9;c++)
{
m2=m1*10+c;n2=n1+jc(c);
if(m2 == n2)
printf("%ld",m2);
for(d=0;d<=9;d++)
{
m3=m2*10+d;
n3=n2+jc(d);
if(m3 == n3)
printf("%ld",m3);
for (e=0;e<=9;e++)
{ m4=m3*10+e;n4 = n3+ jc(e);
if(m4==n4)
printf("%ld ",m4);
for(f=0;f<=9;f++)
{
  m5=m4*10+f;n5=n4+jc(f);
if(m5==n5)
printf("%ld ",m5);
for(g = 0;g < 9;g++)
{
m6=m5*10 + g;n6 = n5 + jc(g);
if(m6 == n6);
printf("%ld",m6);
}}}}}}}}

这个程序是我从至美|C语言程序|中学到得,书上写着有145,但这个程序在判断第二位数时,m1 = 15;n1 = 25,这俩个数不相等,所以怎么是判断的。还有运行了一下,结果是成无限不循环的了。

最佳答案
2019-9-30 18:54:44
long jc(int x)
{
        int i ;
        long p = 1;
        for(i = 1;  i  <= x; i++)
                p  *=i;
        return (p);
}

#include <stdio.h>

int main()
{
        int a,b,c,d,e,f,g;
        long m1, m2, m3, m4, m5, m6, n1, n2, n3, n4, n5, n6;
        printf("所有阶乘和数有: ");
        for(a=1;a<=9;a++)
        {
                if(a==jc(a))    //修改前是a=jc(a)
                        printf("%ld ", a);
                for(b=0;b<=9;b++)
                {
                        m1=a*10+b;  n1= jc(a)+jc(b);
                        if(m1==n1)
                                printf("%ld ", m1);
                        for(c = 0;c<=9;c++)
                        {
                                m2=m1*10+c;  n2=n1+jc(c);
                                if(m2 == n2)
                                        printf("%ld ",m2);
                                for(d=0;d<=9;d++)
                                {
                                        m3=m2*10+d;  n3=n2+jc(d);
                                        if(m3 == n3)
                                                printf("%ld ",m3);
                                        for (e=0;e<=9;e++)
                                        {
                                                m4=m3*10+e;  n4 = n3+ jc(e);
                                                if(m4==n4)
                                                        printf("%ld ",m4);
                                                for(f=0;f<=9;f++)
                                                {
                                                        m5=m4*10+f;  n5=n4+jc(f);
                                                        if(m5==n5)
                                                                printf("%ld ",m5);
                                                        for(g = 0;g <= 9;g++)    //修改前是g<9
                                                        {
                                                                m6=m5*10 + g;  n6 = n5 + jc(g);
                                                                if(m6 == n6)    //修改前多了一个分号,导致不停输出
                                                                printf("%ld ",m6);
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
2019-09-30.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-30 18:54:44 | 显示全部楼层    本楼为最佳答案   
long jc(int x)
{
        int i ;
        long p = 1;
        for(i = 1;  i  <= x; i++)
                p  *=i;
        return (p);
}

#include <stdio.h>

int main()
{
        int a,b,c,d,e,f,g;
        long m1, m2, m3, m4, m5, m6, n1, n2, n3, n4, n5, n6;
        printf("所有阶乘和数有: ");
        for(a=1;a<=9;a++)
        {
                if(a==jc(a))    //修改前是a=jc(a)
                        printf("%ld ", a);
                for(b=0;b<=9;b++)
                {
                        m1=a*10+b;  n1= jc(a)+jc(b);
                        if(m1==n1)
                                printf("%ld ", m1);
                        for(c = 0;c<=9;c++)
                        {
                                m2=m1*10+c;  n2=n1+jc(c);
                                if(m2 == n2)
                                        printf("%ld ",m2);
                                for(d=0;d<=9;d++)
                                {
                                        m3=m2*10+d;  n3=n2+jc(d);
                                        if(m3 == n3)
                                                printf("%ld ",m3);
                                        for (e=0;e<=9;e++)
                                        {
                                                m4=m3*10+e;  n4 = n3+ jc(e);
                                                if(m4==n4)
                                                        printf("%ld ",m4);
                                                for(f=0;f<=9;f++)
                                                {
                                                        m5=m4*10+f;  n5=n4+jc(f);
                                                        if(m5==n5)
                                                                printf("%ld ",m5);
                                                        for(g = 0;g <= 9;g++)    //修改前是g<9
                                                        {
                                                                m6=m5*10 + g;  n6 = n5 + jc(g);
                                                                if(m6 == n6)    //修改前多了一个分号,导致不停输出
                                                                printf("%ld ",m6);
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-3 15:53:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-3 15:54:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-3 15:54:37 | 显示全部楼层

回帖奖励 +4 鱼币

为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 21:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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