求每位数字阶乘之和等于其本身的三位数

发布网友 发布时间:2022-04-21 05:54

我来回答

2个回答

热心网友 时间:2022-06-18 08:25

你的这个程序问题很多,我帮你修改了,正确的答案如下:
#include<stdio.h>
void main()
{
int i,n,s,k,sum,temp=0,j,a[3],t;

for(i=100;i<=999;i++)
{
j=i; sum=0;
for(k=0;k<=2;k++)
{
a[k]=j%10;
t=a[k];
j=j/10;
s=1;
while(t)
{
s*=t;
t--;
}
sum+=s;
}
if(sum==i)
{
printf("%d=%d!+%d!+%d!\n",i,a[2],a[1],a[0]);
temp=1;
}
}

if(temp==0) printf("No output!\n");

getchar();
}

你自己对比一下,然后理解吧,尤其是sum和s的使用,还有temp==1和temp=1是完全不一样的。
还有,增加了一个临时变量t,因为你是用a[k]去算阶乘的,但是没次计算的时候,你做了a[k]--,这样到最后,输出a[0],a[1],a[2]的时候就不准了,肯定都是0了。

热心网友 时间:2022-06-18 08:26

s=0;
循环里面
s*=a[k];

0乘以任何数都为0

将s=0改为s=1

//望采纳

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com