C語言求水仙花數代碼解析

2021-03-01 Linux公社
水仙花數

「水仙花數」又稱為「阿姆斯特朗數」。如果一個n(n≥3)位數的各位數字的n次冪之和等於該數本身,則該數稱為「水仙花數」。

問題描述

輸出所有的「水仙花數」,所謂的「水仙花數」是指一個三位數其各位數字的立方和等於該數本身,例如153是「水仙花數」,因為:153 = 13 + 53 + 33。

問題分析

根據「水仙花數」的定義,判斷一個數是否為「水仙花數」,最重要的是要把給出的三位數的個位、十位、百位分別拆分,並求其立方和(設為s),若s與給出的三位數相等, 三位數為「水仙花數」,反之,則不是。

算法設計

「水仙花數」是指滿足某一條件的三位數,根據這一信息可以確定整數的取值範圍是 100〜999。對應的循環條件如下:

for(n=10; n<1000; n++)
{
    //.
}

對代碼的說明:

對於每個位置上的數值將其拆分的算法有很多種,根據不同情況選擇不同算法(對於同一問題不同算法的效率有時會相差很多)。

下面是完整的代碼:

#include <stdio.h>
int main()
{
    int hun, ten, ind, n;
    printf("結果是:");
    for( n=100; n<1000; n++ )  /*整數的取值範圍*/
    {
        hun = n / 100;
        ten = (n-hun*100) / 10;
        ind = n % 10;
        if(n == hun*hun*hun + ten*ten*ten + ind*ind*ind)  /*各位上的立方和是否與原數n相等*/
            printf("%d  ", n);
    }
    printf("\n");
 
    return 0;
}

運行結果

於是,100~999範圍內(三位數中)的「水仙花數」得到:153,370,371,407。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-11/155571.htm

相關焦點

  • C語言 | 輸出水仙花數
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」這道理放在C語言學習上也一併受用
  • C語言求回文素數代碼及解析
    兩位回文素數:11三位回文素數:101、131、151、181、191、313、353、373、383、727、757、787、 797、 919、 929本題要求解的問題是:求出所有不超過1000的回文素數。問題分析本題要使用判斷素數的方法,並且要解決如何求一個整數的迴文數。
  • C語言求高次方數的尾數代碼解析
    問題描述求13的13次方的最後三位數。
  • c語言中求矩陣的逆只要10行!!!
    核心的部分真的10行就夠了,其他的都是為這個代碼更加generalization…首先要用c語言做矩陣的逆運算,就要知道用手咋求矩陣的逆的首先翻開你的線性代數,兩種辦法:一種是:
  • C語言中的奇技淫巧
    前言學習C語言的過程中,總會遇到很多令人眼前一亮的代碼,尤其是你寫了幾十行的代碼,別人只用了簡單幾行的遞歸就實現的功能
  • 一直以為自己C學的挺好:直到看了這幾個C代碼,連聲說出「臥槽」
    例1 首先來看一下,大師是如何求圓周率的,一口君實在詞窮,first臥槽。 #include <stdio.h>    long a=10000,b=0,c=10000,d,e,f[10001],g;    void main()    {    for(;b !
  • C語言實現魔方陣代碼及解析
    下面是完整的代碼:#include<stdio.h>#include<stdlib.h>int array(int n){    int i, j, no, num, max;    int *mtrx;    if(n%2 == 0)  /*n是偶數,則加1使其變為奇數*/    {
  • C語言學完了,還是不會寫程序?這樣學編程,才有效果!
    相信很多學完以及正在學一門程式語言的同學,都可能會有這樣的經歷和問題,在學完一門課程比如C語言之後,當我們提起一個知識點(如三目運算符,指針、水仙花數
  • 【C語言程序設計】C語言迴文數怎麼求?
    對於一個整數(設變量名為a)無論其位數多少,若欲將最低位拆分,只需對10進行求模運算a%10,拆分次低位首先要想辦法將原來的次低位作為最低位來處理;用原數對10求商可得到由除最低位之外的數形成的新數,且新數的最低位是原數的次低位,根據拆分最低位的方法將次低位求出a/10、a%10,對於其他位上的數算法相同。
  • C語言 | 求100~200的素數​
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」這道理放在C語言學習上也一併受用
  • C語言 | 選擇1或2調用max或min
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」這道理放在C語言學習上也一併受用
  • 【必讀乾貨】5個讓人驚呼「臥槽」的C語言例子,你一定不能錯過
    例1首先來看一下,大師是如何求圓周率的,一口君實在詞窮,first臥槽。= c; f[b++] = a/5);    for(; d=0,g=c*2,c>5000; c--,printf("%.4d",e+d/a),e=d%a)    for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);     } 執行結果:
  • C語言 | 求矩陣對角線元素和
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」這道理放在C語言學習上也一併受用
  • 怎樣學習C語言(獻給迷茫的C愛好者)!
    某天,你須要完畢一個求100的階乘的作業,於是你搬來一個最新的電腦,為它安裝了最新的windows vista作業系統,然後坐在它的身前,喊「餵電腦,給我計算100的階乘」,電腦說「ok, wait a moment」;過了一會,一盤香菇小白菜端了上來!
  • 如果是初學C語言請看完,如何學好C語言絕對精品
    某天,你需要完成一個求100的階乘的作業,於是你搬來一個最新的電腦,為它安裝了最新的windows vista作業系統,然後坐在它的身前,喊「餵電腦,給我計算100的階乘」,電腦說「ok, wait a moment」;過了一會,一盤香菇小白菜端了上來!
  • 看了這幾個C語言例子,你一定和我一樣連說5個臥槽...
    例1首先來看一下,大師是如何求圓周率的,一口君實在詞窮,first臥槽。這些代碼是IOCCC 【(The International Obfuscated C Code Contest)國際C語言混亂代碼大賽是一項國際編程賽事
  • C 語言程序設計---入門篇
    語言,三步走戰略:看視頻 + 看書 + 寫小 demo,不斷的加強自己對 C 的認識,對編程的感覺,激發自己的興趣,從而提升自己的編程能力在進入正式的學習之前,建議大家去看看C 的前世今生:https://blog.codingnow.com/2010/06/c_programming_language.html工欲善其事,必先利其器
  • C語言 | 求小於1000數的平方根
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」這道理放在C語言學習上也一併受用
  • C語言while語句
    在C語言中,共有三大常用的程序結構:前面講解了順序結構和選擇結構,本節開始講解循環結構。
  • 經典C語言程序設計100例 (80~100)
    求??代表的兩位數,及809*??後的結果。= '\0')    {        n = n*8 + *p - '0';        p++;    }    printf("%d", n);        return 0;}--【程序83】題目:求0—7所能組成的奇數個數