C語(yǔ)言趣味編程之水仙花數(shù)
題目描述
求出所有的水仙花數(shù)
分析
百度百科:水仙花數(shù)(Narcissistic number)也被稱為超完全數(shù)字不變數(shù)(pluperfect digital invariant, PPDI)、自戀數(shù)、自冪數(shù)、阿姆斯壯數(shù)或阿姆斯特朗數(shù)(Armstrong number),水仙花數(shù)是指一個(gè) 3 位數(shù),它的每個(gè)位上的數(shù)字的 3次冪之和等于它本身。例如:13 + 53+ 33 = 153。
判斷一個(gè)數(shù)是否為水仙花數(shù),可以先將該數(shù)的所有位都取出并存入數(shù)組,最后代入水仙花數(shù)的公式,如果滿足水仙花條件,該數(shù)即為水仙花數(shù)。
代碼實(shí)現(xiàn)
#include <stdio.h>
#define INTEGER_MAXIMUM 999 //數(shù)字范圍,最大值
#define INTEGER_MINIMUM 100 //最小值
int if_narcissistic_number(int num);
int main()
{
int i = 0;
for(i = INTEGER_MINIMUM; i <= INTEGER_MAXIMUM; i++)
{
if(if_narcissistic_number(i))
{
printf("%d ", i);
}
}
printf("\n已求出所有水仙花數(shù)\n");
return 0;
}
/**
* @brief 判斷是否為水仙花數(shù)
* @return 1:是水仙花數(shù);0:不是水仙花數(shù)
*/
int if_narcissistic_number(int num)
{
/* 如果不是3位數(shù) */
if(num < 100 || num > 999)
return 0;
int hundreds = num / 100; //百位
int tens = num / 10 % 10; //十位
int ones = num % 10; //個(gè)位
if(num == hundreds * hundreds *hundreds +\
tens * tens * tens +\
ones * ones * ones)
return 1;
return 0;
}
運(yùn)行結(jié)果

相關(guān)文章
詳解C語(yǔ)言中accept()函數(shù)和shutdown()函數(shù)的使用
這篇文章主要介紹了詳解C語(yǔ)言中accept()函數(shù)和shutdown()函數(shù)的使用,用來(lái)操作socket相關(guān)的網(wǎng)絡(luò)通信,需要的朋友可以參考下2015-09-09
vscode編譯運(yùn)行c語(yǔ)言報(bào)錯(cuò)亂碼的解決
本文主要介紹了vscode編譯運(yùn)行c語(yǔ)言報(bào)錯(cuò)亂碼,文中通過(guò)圖文介紹的的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析
本篇文章是對(duì)橋接模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語(yǔ)言進(jìn)階練習(xí)二叉樹(shù)的遞歸遍歷
樹(shù)是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹(shù)中稱為結(jié)點(diǎn))按分支關(guān)系組織起來(lái)的結(jié)構(gòu),很象自然界中的樹(shù)那樣。樹(shù)結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會(huì)的族譜和各種社會(huì)組織機(jī)構(gòu)都可用樹(shù)形象表示,本篇介紹二叉樹(shù)的遞歸與非遞歸遍歷的方法2022-06-06
C++實(shí)現(xiàn)LeetCode(11.裝最多水的容器)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(11.裝最多水的容器),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

