题目:水仙花数问题。输入一个正整数n(3<=n<=7),输出所有的n位水仙花数。水仙花数是指一个n位正整数,它的各位数字的n次幂之和等于它本身。例如153的各位数字的立方和是13+53+33=153.
分析:
本例首先要根据输入正整数n,判断循环变量的初始值和终值。初始值即为10n,终值为10n+1。
然后要判断每一个数是否为水仙花数,需要用到循环来计算每一位数。
数/位数=最高位的数,用数%位数=余数作为下一次的被除数。
变量:正整数n,循环变量i
输入:正整数n
处理:根据输入的n的位数,循环寻找可能的水仙花数,并输出。
代码:
#include <stdio.h>
#include <math.h>
int main(void){
int a,n,s,i,j;
int f;
printf("请输入位数:");
scanf("%d",&n);
printf("%d~%d之间的水仙花数有:",(int)pow(10,n-1),(int)pow(10,n));
for(j=(int)pow(10,n-1);j<(int)pow(10,n);j++)
{
a=j;
for(i=n,f=0;i>=1;i--){
s=a/(int)pow(10,i-1);
f=f+(int)pow(s,n);
a=a%(int)pow(10,i-1);
}
if(f==j)
printf("%d ",f);
}
printf("\n");
system("pause");
return 0;
}
运行结果:
版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《C语言编程——29.水仙花数问题》的版权归原作者「C语言从零开始」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458
文章来源: 阅读原文
C语言从零开始微信公众号:gh_40a1b0d695b5
手机扫描上方二维码即可关注C语言从零开始微信公众号