欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-13 17:09:29
...

浙大版《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);
}