c语言 求一个三位数各个位数的阶乘

求一个三位数各个位数的阶乘
例如 输入567 输出5的阶乘+6的阶乘+7的阶乘之和

求高人 明天就要考试了!!!

代码如下:

/*
* 输入一个三位数,计算它的各位数字阶乘之和
*/
#include <stdio.h>

// 计算 a 的阶乘
int fac(int a)
{
if (a==0)
return 1;
else
return a*fac(a-1);
}

//主函数
int main()
{
int num;
int a;
int sum = 0;

do {
printf("请输入一个三位数:");
scanf("%d", &num);
} while (num<100 || num>999);

while (num>0) {
a = num%10;
num = (num-a)/10;
sum += fac(a);
}

printf("各位数字阶乘之和为 %d\n", sum);

return 0;
}

运行程序,输入与输出如下:
请输入一个三位数:123
各位数字阶乘之和为 9
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-29
#include<stdio.h>
int jc(int n)//实现计算出n的阶乘
{
int p=1;
int i;
for(i=2;i<=n;i++)
p*=i;
return p;
}
void main()
{
int a;
int g,s,b;
int sum=0;
printf("请输入一个三位正整数:");
scanf("%d",&a);
//输入完三位数后进行三位数的分解
g=a%10;
s=a/10%10;
b=a/100;
sum+=jc(g)+jc(s)+jc(b);
printf("%d!+%d!+%d!=%d\n",g,s,b,sum);
}
第2个回答  2012-06-29
#include <stdio.h>

int factorial(int n){
if (n == 0)
return 1;
else
return n*factorial(n-1);
}

int get(int n){
int bw = 0, gw = 0, sw = 0;
bw = n/100;
gw = (n%100)/10;
sw = n/10;
sum = factorial(bw) + factorial(gw) + factorial(sw);
return sum;
}

int main()
{
int i;
printf("请输入三位数\n");
scanf("%d", &i);
if (i < 100 || i >=1000) {
printf("输入错误\n");
return -1;
}
sum = get (i);
printf ("这个三位数%d, 各个位数阶乘之和是%d\n", i, sum);
return 0;
}
第3个回答  推荐于2018-04-26
#include<stdio.h>
int main()
{ int x,x1,x2,x3,sum=0;
printf("输入三位正整数:");
scanf("%3d",&x);
x1=x%10;
x3=x/100;
x2=x/10%10;
sum=fun(x1)+fun(x2)+fun(x3);
printf("x=%d sum=%d\n",x,sum);
system("pause");
}

int fun(int n)
{ int i,s=1;
for(i=1;i<=n;i++)
s*=i;
return s;
}
第4个回答  2012-06-29
#include <stdio.h>
int main ()
{
int a,b1,b2,b3,c1,c2,c3,i;
c1=c2=c3=1;
scanf("%d",&a);
b3=a%10;
b2=a/10%10;
b1=a/100;
for(i=1;i<=b3;i++){c3=c3*i;}
for(i=1;i<=b2;i++){c2=c2*i;}
for(i=1;i<=b1;i++){c1=c1*i;}
printf("%d\n",c1+c2+c3);
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网