啊哈c语言——逻辑挑战9:水仙花数

        有一种三位数特别奇怪,这种数的“个位数的立方”加上“十位数的 立方”再加上“百位数的立方”恰好等于这个数。例如: 153=1×1×1+5×5×5+3×3×3,我们为这种特殊的三位数起了一个很好听的名字——“水仙花数”,那么请你找出所有的“水仙花数”吧。

        来分析一下,既然这个数是三位数,那么必然是100~999中的数。 所以我们只需将所有可能性的组合一一判断就可以了。进一步分析,这个三位数的百位上只可能是1~9,十位上只可能是0~9,个位上只可能是0~9。

        我们用三重嵌套循环来产生100~999,代码如下:

#include <stdio.h>
#include <stdlib.h>
int main( )
{int i, j, k;for(i=1; i<=9; i++){for(j=0; j<=9; j++){for(k=0; k<=9; k++){printf("%d ", i*100+j*10+k);}}}system("pause");return 0;
}

        在上面的代码中,我们用for循环i来表示这个三位数的百位(从1循 环到9),用for循环j来表示这个三位数的十位(从0循环到9),用for循 环k来表示这个三位数的个位(从0循环到9)。然后用百位上的数乘以100加上十位上的数乘以10再加上个位上的数就组成了这个三位数,即 i×100+j×10+k。怎么样?运行了上面的代码后计算机是不是输出了100 ~999呢。

        接下来的问题就简单了,来判断这个数是否符合“水仙花数”的要求 就可以了。我们只需在打印之前通过if语句来判断一下就可以了。

        

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d ", i*100+j*10+k);

完整的代码如下:

#include <stdio.h>
#include <stdlib.h>
int main( )
{int i, j, k;for(i=1; i<=9; i++){for(j=0; j<=9; j++){for(k=0; k<=9; k++){if(i*100+j*10+k==i*i*i+j*j*j+k*k*k){printf("%d ", i*100+j*10+k);}}}}system("pause");return 0;
}

        其实,上面的代码可以简写为:

#include <stdio.h>
#include <stdlib.h>
int main( )
{int i, j, k;for(i=1; i<=9; i++)for(j=0; j<=9; j++)for(k=0; k<=9; k++)if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d ", i*100+j*10+k);system("pause");return 0;
}

        因为在for循环i中只嵌套了一个for循环j, for循环j中也只嵌套了一个 for循环k, for循环k中只有一个if语句,if语句中只有一个printf语句,因 此所有{ }都可以省略。

        怎么样?做出来没有?“水仙花数”只有4个,分别是153、370、371 和407。

        上面的方法是“拼接法”,即分别枚举百位、十位、个位上的数的所 有可能,然后再拼接成一个3位数(百位×100+十位×10+个位)。其实我们还可以使用分割法,即将一个三位数x拆分成3部分,即a、b、c, 分别用来存放百位、十位、个位上的数。如果 a×a×a+b×b×b+c×c×c==x,就说明这个数是“水仙花数”。

        那现在的问题是怎样把x拆分成a、b、c呢?例如,当x等于123的时 候,让a里面存1, b里面存2, c里面存3。

        对于一个三位数该怎么获取它的个位上的数呢?很简单,只需将这 个数除以10求余数就可以了。

        那怎么获得百位上的数呢?也很简单,只需将这个数除以100就可以了。因为在C语言中,如果“/”号的左右两边都只有整数部分的话,那么“商”也只有整数部分。 

        

         获得十位上的数有点麻烦,过程如下:

         先将这个数除以10,去除个位,让原来的十位变成个位 (123/10→12),然后再除以10求余数就可以了(12/10→2)。

        转换为C语言代码: 

        试一试看吧: 

#include <stdio.h>
#include <stdlib.h>
int main( )
{int x, a, b, c;x=123;a=x/100;b=x/10%10;c=x%10;printf("%d %d %d", a, b, c);system("pause");return 0;
}

        怎么样?是不是成功地分离出来啦。下面,我们只需让x在100~ 999内循环就可以了:

for(x=100; x<=999; x++)
{
}

        最后加上“水仙花数”的判断:

if(x==a*a*a+b*b*b+c*c*c)
printf("%d ", x);

        完整的代码如下:

#include <stdio.h>
#include <stdlib.h>
int main( )
{int x, a, b, c;for(x=100; x<=999; x++){a=x/100;b=x/10%10;c=x%10;if(x==a*a*a+b*b*b+c*c*c)printf("%d ", x);}system("pause");return 0;
}

        其实我们可以将

a=x/100;
b=x/10%10;
c=x%10;

        改为:

a=x/100%10;
b=x/10%10;
c=x/1%10;

        效果不变!有没有看出什么奥妙?自己去想吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/232785.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2 - Vue.observable 介绍

目录 1&#xff0c;介绍2&#xff0c;使用场景和 Vue 实例的区别 1&#xff0c;介绍 官网参考 可以让一个对象变成响应式数据。在 Vue 内部就是用它来处理传递给 Vue 的 data 对象&#xff0c;或是在单文件组件中 data() 返回的对象。 var vm new Vue({data: {count: 0} })…

MySQL学习笔记2: MySQL的前置知识

目录 1. MySQL是什么?2. 什么是客户端&#xff0c;什么是服务器&#xff1f;3. 服务器的特点4. 安装mysql5. mysql 客户端6. mysql 服务器7. mysql的本体8. MySQL 使用什么来存储数据&#xff1f;9. 数据库的多种含义10. MySQL 存储数据的组织方式 1. MySQL是什么? MySQL 是…

【Unity】 HTFramework框架(四十七)编辑器日志中使用超链接的技巧

更新日期&#xff1a;2024年1月3日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 日志中使用超链接超链接-网络地址超链接-本地地址超链接-项目资源文件超链接-脚本对象 日志中使用超链接 在编辑器控制台Console中的日志是支持富文本的&…

K8S集群部署解决工作节点couldn‘t get current server API group list问题

最近在自己电脑上装了VMWare Player&#xff0c;在上面装了两个Ubuntu虚拟机&#xff0c;为了方便学习云原生技术&#xff0c;决定在上面装一个2个节点&#xff08;一个控制面&#xff0c;一个工作节点&#xff09;的K8S集群。 参考这篇文章&#xff1a; Ubuntu 22.04 搭建K8…

Linux驱动学习—中断

1、中断基础概念 1.1 什么是中断 CPU在正常运行期间&#xff0c;由外部或者内部引起的时间&#xff0c;让CPU停下当前正在运行的程序&#xff0c;转而去执行触发他的中断所对应的程序&#xff0c;这就是中断。 响应中断的过程&#xff1a; <1>中断请求 <2>中断…

探索网络连接的netstat

文章目录 探索网络连接的netstat基本概述更多信息 探索网络连接的netstat 在Linux系统中&#xff0c;网络是至关重要的部分&#xff0c;而netstat命令是管理和监视网络连接的强大工具之一。 它提供了关于网络接口和路由表的详细信息&#xff0c;有助于了解网络连接状态、统计…

全国计算机等级考试| 二级Python | 真题及解析(10)

一、选择题 1.要实现将实数型变量a的值保留三位小数,以下python可以实现的是( ) A.a%0.001 B.a//0.001 C.round(a,3) D.round(3,a) 2.在Python中要交换变量a和b中的值,应使用的语句组是( )。 A…

通信原理期末复习——基础小题汇总(二)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

【Docker】容器的相关命令

上一篇&#xff1a;创建&#xff0c;查看&#xff0c;进入容器 https://blog.csdn.net/m0_67930426/article/details/135430093?spm1001.2014.3001.5502 目录 1. 关闭容器 2.启动容器 3.删除容器 4.查看容器的信息 查看容器 1. 关闭容器 从图上来看&#xff0c;容器 aa…

【leetcode】力扣算法之有效的数独【中等难度】

题目描述 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&…

监控API的指标

监控服务器已经是常态了&#xff0c;但是监控API的表现是啥意思呢&#xff1f;还有监控指标&#xff1f;今天就来看看如何监控API。 正如监控应用程序以确保高质量性能一样&#xff0c;也必须监控API。 API是应用程序相互通信的管道。更具体地说&#xff0c;API提供了一种方法…

软碟通UltraISO制作U盘安装Ubuntu

清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/ 从里面下载ubuntu-22.04-desktop-amd64.iso UltraISO是一款非常不错的U盘启动盘制作工具&#xff0c;一直被许多网友们所喜欢&#xff0c;使用简单、方便。 UltraISO官方下载地址&#xff1a;https://cn.ultrais…

游戏Lua调用01.lua的编译及测试

一、lua库下载与编译 进入lua官网 Lua: version history 找到lua5.1 选择lua5.1是因为大部分游戏使用的都是lua5.1的库&#xff0c;也可以选择高版本&#xff0c;影响不大 下载完了后使用vs建立一个静态库或者动态库的工程 这里以动态库为例子&#xff0c;静态库也是一样的…

用队列实现栈oj题——225

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;LeetCode刷题|数据结构|Linux 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 题目要求&#xff1a;实现 MyStack 类&#xff1a;注意&#xff1a;示例&#xff1a;解释&#xff1a;提示&#xff1a; 解题核心数据结构的定义…

Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中

场景 SpringBootVue整合WebSocket实现前后端消息推送&#xff1a; SpringBootVue整合WebSocket实现前后端消息推送_websocket vue3.0 springboot 往客户端推送-CSDN博客 上面实现ws推送数据流程后&#xff0c;需要在windows上使用ws客户端定时记录收到的数据到文件中&#x…

SPRING BOOT发送邮件验证码(Gmail邮箱)

SPRING BOOT邮件发送验证码 一、Gmail邮箱配置 1、进入Gmail(https://mail.google.com) 2、打开谷歌右上角设置 3、启用POP/IMP 4、启用两步验证(https://myaccount.google.com/security) 5、建立应用程式密码 6、复制保存应用程式密码 二、代码 1、引入依赖 <d…

用HTML的原生语法实现两个div子元素在同一行中排列

代码如下&#xff1a; <div id"level1" style"display: flex;"><div id"level2-1" style"display: inline-block; padding: 10px; border: 1px solid #ccc; margin: 5px;">这是第一个元素。</div><div id"…

Ranger UserSync

作用 同步User到RangerDb 架构 解析 启动一个while(True) 进程定时同步&#xff0c;程序入口 source sink 掉接口获取Ranger User 并且Cache 计算delta 同步

React(2): 使用 html2canvas 生成图片

使用 html2canvas 生成图片 需求 将所需的内容生成图片div 中包括 svg 等 前置准备 "react": "^18.2.0","react-dom": "^18.2.0","html2canvas": "^1.4.1",实现 <div ref{payRef}></div>const pa…

Ubuntu18 安装chatglm2-6b

记了下Ubuntu18 上安装chatglm2-6遇到的问题。 环境&#xff1a;Ubuntu18.04 V100(显卡) nvcc 11.6 显卡驱动cudacudnnaniconda chatglm6b 的安装 网上有很多&#xff0c; 不记录 了。 chatglm2-6b 我从别的地方拷贝的&#xff0c; 模型也包含了。 遇到的问题&#xf…