c語言輸出所有水仙花數,C語言程式設計輸出所有的“水仙花數”。

時間 2021-08-30 11:19:49

1樓:匿名使用者

在第一個for迴圈前面給s賦值時,a、b、c的值沒有初始化,所以整個s=100*a+10*b+c是不確定的值,程式執行便會出錯!

建議修改:將語句s=100*a+10*b+c放到條件語句if(s==(a*a*a+b*b*b+c*c*c))之前,這樣s得到的是確定值,程式執行正常。

修改後源程式如下:

#include "stdio.h"

void main()

int a,b,c,s;

for(a=1;a<10;a++)

for(b=0;b<10;b++)

for(c=0;c<10;c++)

s=100*a+10*b+c;

if(s==(a*a*a+b*b*b+c*c*c))printf("%d\n",s);

getchar();

程式執行結果見插圖。

2樓:我是比丘猴

樓主你好~~

按照你的程式,你可能對於水仙話數有誤解...

首先,水仙花數是指一個 n 位數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3 + 3^3 = 153或3^3+7^3+0^3=370)

注意:是每個 位上 的數字。

而你的原**寫的效果是,例如第一次迴圈1^3+10^3+100^3=111,這樣的表示是錯的,按定義應該是判斷1^3+1^3+1^3 是否等於111,當然明顯是不等的,所以111不是水仙花數。

而且這個**還要考慮一件事,就是除了最高位百位外,十位和個位都有可能是0,所以,分別代表十位和個位的b與a應當從0開始迴圈到9,而百位的c則是從1迴圈到9~~

綜上所述,修改的**如下:

#include

void main()

希望樓主能看明白哈~~祝樓主學習進步~望採納~謝謝~

3樓:1024程式設計師

c語言經典案例之水仙花數

4樓:那風依舊在吹

s==(a*a*a+b*b*b+c*c*c),這個的結果不可能是1,所以printf根本不執行,所以沒輸出

5樓:知道

#include "stdio.h"

main()}}

getch();}

6樓:

方法一:

#include

#include

int main()

return 0;

}方法二:

#include

#include

int main()}}

return 0;}

7樓:趙小程

你沒int main ()

c語言程式設計輸出所有的“水仙花數”。

8樓:匿名使用者

運用vc++6.0編譯執行:

#include

int main()

return 0;}

9樓:匿名使用者

#include

void main()}}

}我自己想的!呵呵,這是本人做出來的第一個c語言程式

10樓:

最基本的方法是列舉法,但時間複雜度較高,不過剪枝後還可以,不慢。

當然也可以用貪心法解決

*****==回答樓下朋友的問題**********=本人是學pascal的,對c語言不太熟悉,能讀懂,但寫還有點困難。見諒!

11樓:匿名使用者

main()

getch();

}樓上能把另外2種演算法 仔細描述下麼?謝謝

12樓:渾含蓮

建議你和程式設計老師當面**一下這道題目,注意學習一下程式設計的思路

c語言:輸出100-999中所有水仙花數。

13樓:會飛的小兔子

//輸出水仙花

voidnarcissusnumber()if(sum==i)

printf("%d\n",i);

擴充套件資料c語言:輸出9*9口訣

#include"stdio.h"

main()

inti,j,result;

printf("\n");

for(i=1;i<10;i++)

{for(j=1;j<10;j++)

result=i*j;

printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,佔3位*/

printf("\n");/*每一行後換行*/

14樓:匿名使用者

在100-999之間的三位數abc,滿足a³+b³+c³=abc,就稱abc為水仙花數。

根據你的描述和提供的**,只需要對輸出的結果進行換行即可,修改後的**如下:

#include

int main()

int i,a,b,c;

for(i=100;i<=999;i++)

a=i/100;

b=i/10%10;

c=i%10;

if(i == a*a*a + b*b*b + c*c*c)

printf("%d is a daffodil number.\n", i);

return 0;

程式執行結果:

擴充套件資料:

除了上面使用的c語言實現外,常用的實現語言還有;

algol**實現“水仙花數”:

begin

integer i,j,k;

for i := 1 step 1 until 9 do

for j := 0 step 1 until 9 do

for k := 0 step 1 until 9 do

if i×i×i + j×j×j + k×k×k = 100×i + 10×j + k then

print (100×i + 10×j + k);

endphp**實現“水仙花數”:

<?php

//使用系統自帶函式,即可實現冪運算,何必畫蛇添足,自己寫函式

functionis_narcissistic($n)

$hundreds=floor($n/100);//分解出百位

$tens=floor($n/10)%10;//分解出十位

$ones=floor($n%10);//分解出個位

return(bool)(pow($hundreds,3)+pow($tens,3)+pow($ones,3)==$n);

for($i=100;$i<1000;++$i)

if(is_narcissistic($i))

echo$i."\n";

die();

15樓:1024程式設計師

c語言經典案例之水仙花數

16樓:

printf("%d is a daffodil number.\n", i); // <-- 加個 \n

17樓:

水仙花數是指一個 n 位數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。判斷一個數是否為水仙花數需要拆分數位,求冪再相加。不過這道題限定了範圍,都是三位數,所以可以使用3重迴圈分別代表3個數位,這樣就省去了拆分的麻煩。

**如下:

#include

int main()

18樓:匿名使用者

這個應該是很長的一段語句,建議你找王靜騰飛園的朋友來幫助你進行解答。

19樓:小蘂

#include

main()}

20樓:聚光扒土機

printf("%d is a daffodil number\n.", i);就行了

21樓:匿名使用者

再輸出內容後加\n換行

22樓:快樂峰喃

#include

#include

void main()}

c語言題目:輸出所有的“水仙花數”,並輸出其總個數。所謂“水仙花數”是指一個3位數,其各位數字的立... 30

23樓:匿名使用者

具體bai

程式如下:

#include

void main()

}printf("\n水仙花數的個數為\t%d",count);

printf("\n");

}執行結果如下

24樓:因團囡

#include

int main()}}

return 0;

}一共四個

25樓:匿名使用者

#include

void main()}

26樓:

#include "stdio.h"

main()

} printf("\n一共有答%d個水仙花數\n",m);

return 0;}

C語言程式設計輸出所有的“水仙花數”

運用vc 6.0編譯執行 include int main return 0 include void main 我自己想的 呵呵,這是本人做出來的第一個c語言程式 最基本的方法是列舉法,但時間複雜度較高,不過剪枝後還可以,不慢。當然也可以用貪心法解決 回答樓下朋友的問題 本人是學pascal的,對...

用c 求所有水仙花數,如何求取水仙花數?

解題思路 水仙花數是指乙個n位正整數 n 3 如果這個數的每個位上的數字的n次冪之和等於它本身 例如 1 3 5 3 3 3 153 就稱這個數為水仙數。所以,要判斷乙個數是不是水仙數,關鍵就是要取得各個位上的數字,然後累計它們的n次方和,再進行判斷。取得各個位上的數字可以通過取餘運算子 和除號 來...

輸入正整數m和n輸出m到n中所有水仙花數?用c語

1.水仙花數是指乙個 n 位數 n 3 它的每個位上的數字的 n 次冪之和等於它本身。例如 1 3 5 3 3 3 153 include bool isdaffodil int num return sum num int main 皮飇湛依凝 for迴圈 行水仙花數沒 於1000 用數證明 in...