本文介绍: 多种方式打印出1000之内的所有的“水仙花数”

        所谓水仙花数,是指一个3位数,其各位数字立方和等于该数本身。水仙花数是指一个三位数,它的每个位上的数字立方和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。

方法

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main() 
{
    int i, j, k, num;
    // 循环遍历所有的3位数
    for (i = 1; i <= 9; i++) 
	{
        for (j = 0; j <= 9; j++) 
		{
            for (k = 0; k <= 9; k++) 
			{
                num = i * 100 + j * 10 + k;
                // 判断是否水仙花数并打印
                if (num == i*i*i + j*j*j + k*k*k) 
				{
                    printf("%dn", num);
                }
            }
        }
    }
    return 0;
}

        这个程序通过三个嵌套的循环遍历所有的3位数,并检查它们是否满足水仙花数的条件。如果一个数满足条件,它就会被打印出来。

方法二 

#include <stdio.h&gt;

int main() {
    int num, digit, sum;
    printf("水仙花数:n");
    for (num = 100; num <= 999; num++) 
    {
        sum = 0;
        int temp = num;
        while (temp != 0) 
        {
            digit = temp % 10;
            sum += digit * digit * digit;
            temp /= 10;
        }
        if (sum == num) 
        {
            printf("%d ", num);
        }
    }
    printf("n");
    
    return 0;
}

方法

#include <stdio.h&gt;

int main() {
    int i, j, k, n;
    printf("水仙花数:n");
    for (n = 100; n <= 999; n++) 
    {
        i = n / 100; // 百位数
        j = n / 10 % 10; // 十位数
        k = n % 10; // 个位数
        if (n == i * i * i + j * j * j + k * k * k) 
        {
            printf("%d ", n);
        }
    }
    return 0;
}

方法四

#include <stdio.h&gt;
#include <math.h&gt;
 
int main()
{
    int a, b, c, n;
    n = 100;
    printf("水仙花数:n");
    while (n < 1000)
    {
        a = n % 10; // 取个位数
        b = n / 10 % 10; // 取十位数
        c = n / 100; // 取百位数
        if (n == pow(a, 3) + pow(b, 3) + pow(c, 3)) // 判断是否为水仙花数
        {
            printf("%d ", n); // 输出水仙花数
        }
        n++;
    }
    return 0;
}

方法五(函数

#include <stdio.h&gt;

int isWaterfallNumber(int num) 
{
    int digit1 = num / 100; // 获取百位数字
    int digit2 = (num % 100) / 10; // 获取十位数字
    int digit3 = num % 10; // 获取个位数字
    
    // 判断各位数字的立方是否等于该数本身
    if(digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3 == num) 
    {
        return 1; // 是水仙花数
    } else {
        return 0; // 不是水仙花数
    }
}

void printWaterfallNumbers() 
{
    int num;
    
    printf("水仙花数:");
    for(num = 100; num <= 999; num++) 
    {
        if(isWaterfallNumber(num)) 
        {
            printf("%d ", num);
        }
    }
}

int main() 
{
    printWaterfallNumbers();
    return 0;
}

原文地址:https://blog.csdn.net/W_Fe5/article/details/134655121

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14103.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注