C语言编程练习:水仙花数

article/2025/7/3 20:01:45

文章目录

  • 题目描述
  • 思路
  • 结果


题目描述

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 13+53+ 33。本题要求编写程序,计算所有N位水仙花数。

输入格式:
输入在一行中给出一个正整数N(3<=N<=7 )。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407


思路

首先需要读入一个数,保存在n中。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int n;scanf("%d", &n);return 0;
}

既然要找出对应位数中的水仙花数,就需要对范围内的数进行遍历。对于三位数,遍历范围就是100 ~ 999,对于四位数,遍历范围就是1000 ~ 9999。我们写一个循环求出循环的起始点,循环的结束点就是 起始点*10-1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int n;scanf("%d", &n);//计算遍历范围的起始点int first = 1;int i = 1;while (i < n) {first *= 10;i ++;}//遍历范围就是first到first-1i = first;while (i < first * 10) {i++;}return 0;
}

在遍历过程中,我们需要去分解这个数,因此使用个临时变量t去记录它。我们还需要一个变量临时sum来记录每位数n次幂的和。执行分解过程需要一个循环,在循环中每次让t%10得到最后一位数,同时让t除以10。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int n;scanf("%d", &n);int first = 1;int i = 1;while (i < n) {first *= 10;i ++;}i = first;while (i < first * 10) {int t = i; //每次需要分解这个i,所以使用临时变量int sum = 0; //记录各个位上对应数的n次幂的和do {int d = t%10; //去当前数的最后位上的数字t/=10;    //除以10,去掉当前数的最后位上的数字}while(t>0);i++;}return 0;
}

在执行分解的循环中,还需要一个循环去求出t%10所得值得n次幂,并将结果加到sum中。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int n;scanf("%d", &n);int first = 1;int i = 1;while (i < n) {first *= 10;i ++;}i = first;while (i < first * 10) {int t = i;int sum = 0;do {int d = t%10;t/=10;//计算一个数的n次幂int p = d;int j = 1;while (j < n) {p*=d;j++;}sum += p;}while(t>0);}return 0;
}

最后进行判断,当sum与n相等时,输出这个水仙花数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int n;scanf("%d", &n);int first = 1;int i = 1;while (i < n) {first *= 10;i ++;}i = first;while (i < first * 10) {int t = i;int sum = 0;do {int d = t%10;t/=10;int p = d;int j = 1;while (j < n) {p*=d;j++;}sum += p;}while(t>0);if (sum == i){printf("%d\n", i);}i++;}return 0;
}

结果

运行,输入3,结果如下:
在这里插入图片描述

运行,输入4,结果如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/sGctGcrQ.shtml

相关文章

C语言:水仙花数(daffodil),求出三位数中所有水仙花数

水仙花数&#xff08;C语言&#xff09; 文章目录 水仙花数&#xff08;C语言&#xff09;前言一、题目二、解题思路代码运行结果 总结***根据水仙花数满足的条件找出需要求的对象&#xff0c;这里是各位上的位数。*** 前言 刘汝佳算法书《算法竞赛入门经典》第二章上机练习第…

C语言输出三位数的水仙花数

从100-999中找出符合条件的水仙花数 文章目录 从100-999中找出符合条件的水仙花数前言一、水仙花数是什么&#xff1f;二、C语言实现输出水仙花数1.解题思路2.实现过程 总结 前言 提示&#xff1a;找出符合条件的水仙花数&#xff0c;我们需要弄明白什么叫水仙花数&#xff0c…

c语言设计程序计算水仙花数,C语言水仙花数算法

打印出所有的“水仙花数”&#xff0c; 所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方5的三次方3的三次方。 1.程序分析&#xff1a;利用for循环控制100-999个数&#xff0c;每…

水仙花数的实现(C语言)

问题描述&#xff1a;一个三位数&#xff0c;百位的立方加上十位的立方加个位的立方对于这个数本身。 即&#xff1a;abc a^3b^3c^3; 例如&#xff1a;153 1^35^33^3 求出所有的水仙花数&#xff1a; 这是一个将一个三位数的百位&#xff0c;十位&#xff0c;个位提出来&…

C语言输出所有的水仙花数

输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数&#xff0c;其各位数字立方之和等于该数本身。 例如&#xff0c;153是一个水仙花数&#xff0c;因为15315&#xff0b;3 解题思路&#xff1a;水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别拆分&#…

C语言实现求水仙花数

水仙花数是指一个数各位数字的立方和等于该数本身。 例如&#xff1a;153 13 53 33 求100–1000内的水仙花数。 代码如下&#xff1a; #include <stdio.h> #include <math.h>int main () {int i,j,k,n;printf("100-1000中的水仙花数字有:\n");for…

【必懂】C语言水仙花数题解

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 前言 本专栏内容将会以轻松、简单的方式完成习题的解答&#xff0c;用…

C语言 水仙花数两种算法

两种方法&#xff1a;普通解法和巧妙解法 题目&#xff1a;打印出所有的“水仙花数”&#xff0c;所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。 例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方&#xff0b;5的三次方&#…

C语言编写水仙花数

C语言输出100~1000之间的水仙花数 水仙花数是什么&#xff1a; 水仙花数是指一个 3 位数&#xff0c;它的每个位上的数字的 3次幂之和等于它本身&#xff08;例如&#xff1a;1^3 5^3 3^3 153&#xff09;。 代码如下&#xff1a; #include<stdio.h> void main() { …

C语言求“水仙花”数(详细)

问题分析 “水仙花数”是指一个三位数&#xff0c;其每位数字的立方和等于该数本身。例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方。 基于此&#xff0c;利用for循环控制100-999个数&#xff0c;每个数分…

C语言之水仙花数

题目要求&#xff1a; 水仙花数是指一个N位正整数(N>3)&#xff0c;它的每一位上的数字的N次幂之和等于它本身。例如&#xff1a;153 135333。本题要求编写程序&#xff0c;计算所有N位水仙花数。 输入格式&#xff1a; 输入在一行中给出一个正整数N(3<N<7)。 输出格…

C语言计算水仙花数的两种方法

水仙花数指的是一个n位数&#xff08;n>3&#xff09;,他的每一个位上的数字的n次幂之和等于他的本身&#xff0c;求出所有的三位数的水仙花数。 方法一&#xff1a; 先遍历100~999然后拆出每一个数的个位、十位、百位&#xff0c;最后求三次幂之和是否为此数 #include<…

大数据中台

数据中台的由来 数据中台最早是阿里提出的&#xff0c;但真正火起来是2018 年&#xff0c;我们能感受到行业文章谈论数据中台的越来越多。大量的互联网、非互联网公司都开始建设数据中台。为什么很多公司开始建设数据中台&#xff1f;尽管数据中台的文章很多&#xff0c;但是一…

浅谈大型互联网企业入侵检测及防护策略

前言 如何知道自己所在的企业是否被入侵了&#xff1f;是没人来“黑”&#xff0c;还是因自身感知能力不足&#xff0c;暂时还无法发现&#xff1f;其实&#xff0c;入侵检测是每一个大型互联网企业都要面对的严峻挑战。价值越高的公司&#xff0c;面临入侵的威胁也越大&#…

国家级专精特新小巨人企业是什么?

什么是国家级专精特新小巨人企业 首先需要了解什么是专精特新&#xff0c; 专-是指专业化&#xff0c;采用专项技术或工艺通过专业化生产制造的专用性强、专业特点明显、市场专业性强的产品。 精-是指精细化&#xff0c;采用先进适用技术或工艺&#xff0c;按照精益求精的理念…

什么是小规模纳税人、小型微利企业、小微企业

什么是小规模纳税人、小型微利企业、小微企业?这下终于搞明白了.自今年不断的发布减税降费的优惠政策以来&#xff0c;很多财务人员都将小微企业、小型微利企业、小规模纳税人的概念混淆&#xff0c;以至于无法合理享受相应的优惠政策。 一、首先&#xff0c;我们从概念上区分…

中小企业 数量 e-mail_【深圳】市中小企业服务局关于发布2021年深圳市工业设计发展扶持计划工业设计走进中小微制造企业扶持项目申请指南的通知...

点击上方蓝字关注我哦 申请指南 一、支持方向重点支持中小微制造企业为 提升产品差异化、增强品牌个性化&#xff0c; 向专业工业设计企业购买工业设计服务的项目。 二、支持数量、方式及标准方式 (一)支持数量&#xff1a;有数量限制&#xff0c;受年度工业设计业发展专项资金…

2021年深圳市专精特新中小企业遴选申报指南

一、专精特新申报对象 主营业务和发展重点符合国家产业政策及相关要求&#xff0c;专业化、精细化、特色化、新颖化特征明显&#xff0c;创新能力强、发展速度快、运行质量高、融资能力强、经济效益好的中小企业。所称中小企业的标准&#xff0c;按照工业和信息化部、国家统计局…

excel--统计上大中小微企业划型判断工具

用Excel判断企业划型 企业划型 统计上大中小微企业划分标准(2011)300号是在统计工作上划分大中小微企业的标准&#xff0c;是为贯彻落实工业和信息化部、国家统计局、国家发展改革委、财政部制定了《关于印发中小企业划型标准规定的通知》&#xff0c;用来规范中小企业。 后…