C语言:输出一个整数各位阶乘之和

该代码实现了一个功能,通过递归计算阶乘,并将输入的整数分解为每一位,逐位计算阶乘,然后将各位阶乘之和与原始整数比较。当和等于原始整数时,输出Yes,否则输出No。示例中,145的各位阶乘之和等于145,而1400的各位阶乘之和不等于1400。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关知识点:数组,函数、循环语句、条件判断语句
代码思路:
1.使用递归构造阶乘函数
2.键盘输入整数
3.利用数组保存整数的每一位
4.利用循环对整数的每一位求阶乘

代码如下:

#include <stdio.h>
 //构造阶乘函数
int f(int n) {
	
  if (n == 0)
    return 1;
  else
    return n * f(n - 1);
}


int main(){
	int a,b = 0,c,d,i,sum=0;
	int num[10],length = 0;//定义数组与数组最大长度变量
	scanf("%d",&a);
	c = a;//使用变量c保存a的值

//使用循环取出整数的每一位并保存到数组(从个位开始取)
//先取余得到个位再做出取整得到十位,以此进行循环得到每一位
while(a!= 0){
		num[length] = a%10;
		a /= 10;
		length++;
		
	}
//输出结果,因结果格式特殊这里分步输出
printf("%d,",c);
	for(i=0;i<length-1;i++){
			printf("%d+",f(num[i]));
			sum += f(num[i]);
	}

printf("%d=%d",f(num[length-1]),sum+f(num[length-1]));
//如果每一位阶乘之和为输入的整数则输出Yes反之为No
if(sum+f(num[length-1])==c)
printf("\nYes");
else
printf("\nNo");
	return 0;
}

结果如下:

145
145,120+24+1=145
Yes

Process exited normally.
Press any key to continue . . .


1400
1400,1+1+24+1=27
No

Process exited normally.
Press any key to continue . . .

判断完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值