tft每日頭條

 > 生活

 > c語言打出所有的水仙花數

c語言打出所有的水仙花數

生活 更新时间:2025-01-08 12:43:48

c語言打出所有的水仙花數?C語言水仙花數(詳解版)輸出所有的“水仙花數”,所謂的“水仙花數”是指一個三位數其各位數字的立方和等于該數本身,例如153是“水仙花數”,因為:153 = 13 53 33,接下來我們就來聊聊關于c語言打出所有的水仙花數?以下内容大家不妨參考一二希望能幫到您!

c語言打出所有的水仙花數(C語言水仙花數詳解版)1

c語言打出所有的水仙花數

C語言水仙花數(詳解版)

問題描述

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

問題分析

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

算法設計

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

for(n=10; n<1000; n )

{

//......

}

對代碼的說明:

  • 将n整除以100,得出n在百位上的數字hun。
  • 将(n-i*100)整除以10(或将n先整除以10再對10求模n/10),得出n在十位上的數字ten。
  • 将n對10取餘,得出n在個位上的數字ind。
  • 求得這三個數字的立方和是否與其本身相等,若相等,則該數為水仙花數。

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

下面是完整的代碼:

1. #include <stdio.h>

2. int main()

3. {

4. int hun, ten, ind, n;

5. printf("result is:");

6. for( n=100; n<1000; n ) /*整數的取值範圍*/

7. {

hun = n / 100;

9. ten = (n-hun*100) / 10;

10. ind = n % 10;

11. if(n == hun*hun*hun ten*ten*ten ind*ind*ind) /*各位上的立方和是否與原數n 相等*/

12. printf("%d ", n);

13. }

14. printf("\n");

15. return 0;

17. }

運行結果: result is:153 370 371 407

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved