相关知识点:数组,函数、循环语句、条件判断语句
代码思路:
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 . . .
判断完成