浙大版《C语言程序设计(第3版)》题目集 习题5-6 使用函数输出水仙花数 (20分)
程序员文章站
2022-03-13 17:09:29
...
方法一:
#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;
}
int narcissistic(int number)
{
int count, digit, item, n, sum, ret, k, i;
n = number, count = 0;
while (n)
{ //算出number是几位数。
n /= 10;
count++;
}
sum = 0, n = number;
while (n)
{
digit = n % 10;
item = 1;
for (i = 0; i < count; i++)
item *= digit;
sum += item;
n /= 10;
}
if (sum == number)
ret = 1;
else
ret = 0;
return ret;
}
void PrintN(int m, int n)
{
int i;
for (i = m + 1; i < n; i++)
if (narcissistic(i))
printf("%d\n", i);
}
方法二:
int narcissistic(int number)
{
int count, sum, temp, ret;
count = 0, temp = number;
while (temp)
{
count++;
temp /= 10;
}
sum = 0, temp = number;
while (temp)
{
sum += pow(temp % 10, count);
temp /= 10;
}
if (sum == number)
ret = 1;
else
ret = 0;
return ret;
}
void PrintN(int m, int n)
{
int i;
for (i = m + 1; i < n; i++)
if (narcissistic(i))
printf("%d\n", i);
}