水仙花数的搜索和判定问题(利用C语言)

水仙花数的搜索和判定问题

一、 课题内容和要求

题目 A4:

水仙花数的搜索和判定问题 水仙花数(Narcissistic number)又被称为阿姆斯特朗数(Armstrong number)。 水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身(例 如:1^3 + 5^3+ 3^3 = 153)。使用 for 循环语言来控制 100-999 个数,将每个数分 解出个位/十位/百位。,并对执行时间进行测试。

二、需求分析

使用 for 循环和 if 语句来判断三位数是否满足需求,

i = n / 100; 分解出百位 j = n / 10 % 10; 分解出十位 k = n % 10; 分解出个位
if ( n== i * i * i + j * j * j + k * k * k )

将每个数分解出个位/十位/百位,并对执行时间进行测试。

三、概要设计

在这里插入图片描述

首先输入int n=100、定义int i,j,k,再利用for循环来判断三位数是否满足要求,最后输出满足水仙花数的三位数。

该程序主要调用的就是

for (n = 100; n < 1000; n++)

以达到循环的效果。

四、详细设计

#include <stdio.h> 
#include <stdlib.h>
// 求出水仙花数
int main()
{   // 水仙花数是一个3位数
    // 水仙花数是个位、十位、百位的数字立方和等于原数
    int i, j, k, n;
    printf(" 100-1000之间满足要求的水仙花数是: \n");
    // 判断三位数是否满足要求
    for (n = 100; n < 1000; 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", n);
        }
    }
    printf("\n");
    return 0;
}

五、测试数据及其结果分析

在这里插入图片描述

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身

(例如:1^3 + 5^3+ 3^3 = 153)。

三位的水仙花数共有4个:153,370,371,407;

六、调试过程中的问题

问题:未使用换行,导致数据堆积不易观察

printf(" 100-1000之间满足要求的水仙花数是: “); printf(” %d", n);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ksciicQk-1661769605876)(file:///C:/temp/msohtmlclip1/01/clip_image006.gif)]

解决办法:利用转义字符 \n 达到换行的效果。

printf(" 100-1000之间满足要求的水仙花数是: \n"); printf(" %d\n", n);

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sh9vXdnR-1661769605876)(file:///C:/temp/msohtmlclip1/01/clip_image007.gif)]**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值