基于基础c语言的水仙花数编程方法

首先,什么是水仙花数?

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

那么,如何用基础的c语言语句来编写一个能够实现3~7位的水仙花数的输出呢?

这边,我们需要用到几个简单的循环语句。

下面进行水仙花数基于c语言简单循环语句的编写。

思路

将程序大致分为两个模块,一个模块确定数的范围,一个模块用来遍历寻找水仙花数。

方法

1.确定程序输出的水仙花数的数值范围,比如我需要实现一个3位数水仙花数的输出,那么,我们的数值范围就是100~999

for (i = 1; i < n; i++) {
        first *= 10;
    }
    printf("%d\n", first);

2.水仙花数是怎么定义的呢,简单点就比如153=1^3 + 5^3+ 3^3,由于我们使用的是简单的循环语句,暂时不用到函数,所以我们需要对一个数进行循环相乘。比如1的三次方我需要循环相乘3次来得到。而在数循环相乘之前,我们需要对这个数进行拆分。比如:153拆分成1 5 3三个独立的数值。

do {
            int d = t;
            d %= 10;
            t /= 10;

} while (t > 0);

一位一位进行取余处理,这样循环多次即可分离出各个独立的数值。

3.分离出来的独立的数值还需进行自乘,1的三次方=1*1*1,我们可以用循环语句来实现。

            int j;
            int p = d;
            for (j = 1; j < n; j++) {
                p *= d;  
            }

4. 最后,便是判断,定义一个sum,如果sum=i,我们即可输出这个sum为水仙花数

sum += p;

if (sum == i) {
            printf("%d\n", sum);

}

 最后,输出即可。总代码如下:

#include<stdio.h>

int main() {
    int n;
    scanf_s("%d", &n);
    int first = 1;
    int i = 1;
    
    for (i = 1; i < n; i++) {            //确定范围
        first *= 10;
    }
    printf("%d\n", first);
    i = first;

    while (i < first * 10) {            //遍历寻找水仙花数
        int t = i;
        int sum = 0;
        do {                                 //对数进行拆分处理
            int d = t;
            d %= 10;
            t /= 10;
            int j;
            int p = d;
            for (j = 1; j < n; j++) {
                p *= d;
                
            }
            sum += p;
        } while (t > 0);
        
        if (sum == i) {                 //判断是否为水仙花数
            printf("%d\n", sum);
        }
        i++;
    }
    return 0;
}

记录自己学习c语言的路程,加油。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值