长沙靠谱的游戏公司:用C语言编写程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 02:36:51
1.求这样一个三位数,该三位数等于其每位数字的阶乘之和,即abc=a!+b!+c! 求abc是多少?
2.设N是一个四位数,它的9倍恰好是其反序数,求N的值.(反序数就是将整数的数字倒过来形成的整数)

第一题:#include<stdio.h>
int jc(int );
int jc(int x){
int y=1,i;
for(i=1;i<=x;i++)
y=y*i;
return y;
}

void main(){
int abc,a,b,c;
for (abc=100;abc<=999;abc++){
c=abc%10;
b=(abc/10)%10;
a=abc/100;
if (abc==(jc(c)+jc(b)+jc(a)))
printf("此数为:%d\n",abc);
}
}

我不懂0有没有阶乘,所以没有考虑。

第二题:
#include<stdio.h>
void main(){
int N,x,k,s;
for (N=1000;N<=9999;N++){
s=0,x=N;
while (x>=1){
k=x%10;
x=x/10;
s=s*10+k;
}

if (N*9==s)
printf("此数为%d",N);
}
}

谢谢chimiara指证

补充:
<1> 0的阶层是1。
int jc(int x){
int y=1,i;
if(x==0) y=1;
else for(i=1;i<=x;i++)
y=y*i;
return y;
}

<2> 上述第2题存在错误:while (x>1) 应改为while(x>=1)
此数为1089