前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >那些年我们一起忘掉的C (二).水仙花数

那些年我们一起忘掉的C (二).水仙花数

作者头像
franket
发布2021-10-18 11:02:59
2040
发布2021-10-18 11:02:59
举报
文章被收录于专栏:技术杂记

前言

日积跬步,可至千里


概要


打印所有水仙花数

打印所有 “水仙花数”,所谓 “水仙花数” 是指一个三位数,其各位数字立方和等于该数本身

例如,153是一个水仙花数,因为153=1的立方 + 5的立方+ 3的立方

代码注解

代码语言:javascript
复制
#include <stdio.h>

void main() // void 代表主函数没有返回值,空括号代表主函数不带参;大部分情况下都是如此,但是主函数是可以带参的,形式是这样: void main(int argc,char *argv[]),argc 是包括执行文件本身在内的参数总个数,argv是一个字符型指针数组,里面依次装有参数的字符串
{
	int i,a,b,c; //定义四个整型变量
	for (i=100;i<1000;i++) // 给i赋初值100,在[100,999]的范围内,i会逐1自增 
		{
			a=i/100; //将的百位取出赋予a,因为整型之间的算数运算结果还是整型(会舍去小数位)所以利用这个特性与100相除可以取出百位的数值
			b=i%100/10; //将i的十位取出赋予b,与100的取模,可以得到低两位的值,再除10可以得到十位的值,原理同上
			c=i%10; //将i的个位取出赋予c,直接对10取模就可以获得个位的余值
			if (i == a*a*a+b*b*b+c*c*c) printf("%d\n",i); //判断i的值是否与自己个十百各位的立方和相等,如果相等就打印输出
		}    
}

思路

思路还是相对简单

通过水仙花数的定义,可知我们的甄选范围是所有的三位数整数,因此这里需要一次对[100,999]的遍历

然后关键就是如何将这个三位数的个十百位数值分别取出

紧接着就是将值进行比较,符合特性的进行输出

这里还有另一种路径,就是分别对这个三位数的个十百位进行遍历,个位范围[0,9],十位范围 [0,9],百位范围[1,9],然后使用这些数值来构建这个三位数,然后进行比较和过滤

基础知识点

  • 循环与控制
  • 条件判断
  • 基本算术运算
  • 终端格式输出

原文地址

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 概要
    • 打印所有水仙花数
      • 代码注解
      • 思路
      • 基础知识点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档