发布网友 发布时间: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
//望采纳