题目:有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。即:abc = a! + b! + c!
下面的程序用于搜索这样的3位数。请补全缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可
#include<stdio.h>
int main()
{
int JC[] = {1,1,2,6,24,120,720,5040,40320,362880};
int i;
for(i=100; i<1000; i++)
{
int sum = 0;
int x = i;
while(_______) //填空
{
sum += JC[x%10];
x /= 10;
}
if(i==sum) printf("%d\n", i);
}
return 0;
}
解题思路: JC[]数组存储着1!到9!,接着遍历100-999(所有的三位数),用临时变量x=i,因为i是循环变量所以不能改变,而后面的while中的操作是将遍历到的三位数通过(%10)一位一位取出来,每一次循环三位数的位数就少一位,即发生改变,所以用一个临时变量x。while中的填空内容应该为控制取位操作的条件。一开始进来是三位数,取位结束应该三位数都被取完,即x变为0是结束while循环,故填空内容为 x != 0
#include<stdio.h>
int JC[] = {1,1,2,6,24,120,720,5040,40320,362880};
int i;
int main()
{
for(i=100; i<1000; i++)
{
int sum = 0;
int x = i;
while(x != 0)
{
sum += JC[x%10];
x /= 10;
}
if(i==sum) printf("%d\n", i);
}
return 0;
}