作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白
公众号: 【C you again】,分享计算机类毕业设计源码、IT技术文章、游戏源码、网页模板、程序人生等等。公众号回复 【粉丝】进博主技术群,与大佬交流,领取干货学习资料
关于转载:欢迎转载博主文章,转载时表明出处
求赞环节:创作不易,记得 点赞+评论+转发 谢谢你一路支持
快速找到所需题目:浙大版c语言程序设计第三版题目集一览表
微信搜索公众号【C you again】:
习题4-6 水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
代码:
#include<stdio.h>
void fun1(int *m,int *n,int N)
{
int i;
int t1,t2;
t1=t2=1;
for(i=1;i<=N-1;i++)
t1*=10;
for(i=1;i<=N;i++)
t2*=10;
*m=t1;*n=t2-1;
}
int fun2(int n,int N)
{
int i;
int t;
int sum=0;
int tt=n;
while(n)
{
t=1;
int temp=n%10;
for(i=1;i<=N;i++)
{
t*=temp;
}
sum+=t;
n/=10;
}
if(tt==sum) return 1;
else return 0;
}
int main()
{
int N;
scanf("%d",&N);
int m,n;
fun1(&m,&n,N); //找出最小N位数和最大N位数
//printf("%d %d\n",m,n);
int i;
for(i=m;i<=n;i++)
{
int temp=fun2(i,N);
if(temp==1) printf("%d\n",i);
}
return 0;
}