题目内容
- 写两个函数
- 函数narcissistic,传入一个值,用于判断输入的数是不是水仙花数,是水仙花数返回1,否则返回0
- 函数PrintN,传入两个值,求开区间范围内所有水仙花数
注1:题目中保证100≤m≤n≤10000
注2: 水仙花数:一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身
eg: 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
测试程序样例
#include <stdio.h>
int narcissistic( int number );
void PrintN( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);
PrintN(m, n);
if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);
return 0;
}
在程序后面完成自己的函数
输入样例
153 400
输出样例
153 is a narcissistic number
370
371
注 题目来源:浙大版《C语言程序设计(第3版)》题目集
解题思路
观察题目,输入和输出样例,可知printN函数的两端是开区间,会帮我们判断两端是否是水仙花数,且数字后有"is a narcissistic number",我们的函数只需输出数字
再观察程序头部和主函数,printN函数的类型是void,主函数中也没有关于printN的输出语句,因此我们的printN函数不需要return,而是在函数中直接输出
我们可以通过在printN函数中调用narcissistic函数,将所有结果是1的数进行输出来完成寻找水仙花数
而narcissistic函数需要我们把一个三位数或者四位数的每一位拆开进行,进行幂运算,判断这个数是不是水仙花数,而要把每一个数拆开,我们要先判断这个数是几位数
柿子挑软的捏(doge),所以咱可以先写printN函数
void PrintN( int m, int n )
{
int i;
for(i