浙大版《C语言程序设计(第3版)》题目集 习题5-6 使用函数输出水仙花数 (20分)

在这里插入图片描述

方法一:

#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);
}
发布了252 篇原创文章 · 获赞 117 · 访问量 8535

猜你喜欢

转载自blog.csdn.net/qq_44458489/article/details/105354389