當前位置:生活全書館 >

IT科技

> 【3】求水仙花數 c語言如何學習

【3】求水仙花數 c語言如何學習

第21課計算水仙花數授課人:楊鵬高中資訊科技必修2:演算法與程式設計1.尋找水仙花數。水仙花數是指這樣的三位整數,其各個位上的數之立方和恰好等於該數自己,例如371,是水仙花數,因為371=33+73+13,設計一個演算法尋找出所有的水仙花數。2.尋找玫

水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指一個 n 位數(n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153),下面我就簡單介紹下如何求水仙花數

c語言如何學習:【3】求水仙花數

材料/工具

電腦

方法

方法一

#include <stdio.h>

所謂的“水仙花數”是指一個三位數其各位數字的立方和等於該數本身,例如153是“水仙花數”,因為:153 = 1^3 + 5^3+ 3^3 。 下面是完整的C語言程式設計程式碼: 執行結果:result is:153 370 371 407 擴充套件資料 常見水仙花數 水仙花數又稱阿姆斯特朗數。

#include <math.h>

1、首先需要開啟Dev-c++軟體,點選“新建原始碼”。 2、然後按照如圖所示填寫程式碼。 3、其中:a表示的是水仙花數的百位數,b表示的是水仙花數的十位數,c表示的是水仙花數的個位數,sum表示的是所有累加下來的水仙花數。 4、if(sum==a*a*a+b*b*b+c

int main()

#include #include void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n

{

int i,m,sum;

#include int main() { int start, end, i = 0, a, b, c, size = 0; while (scanf("%d %d", &start, &end) == 2) { for (i = start; i

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

#include #include main () { double i=10,j,k,n,m,l; printf("intpu X");//輸入界限就是多少以內的水仙花數 scanf(%lf,&k); for (;i

{

sum=0;

在for語句包含了對i進行賦值“i=100”,當你將“a=i/100;b=(i-100*a)/10;c=i%10;”提到for語句前,i由於沒有初始值,i/100的操作就會報錯,則語句就會出錯

m=i;

do

{

sum=sum+pow(m%10,3);//pow(a,b)是指a的b次冪是double型的

方法:先弄懂什麼是水仙花數:: 水仙花數是指一個n(>=3)位數字的數,它等於每個數字的n次冪之和。 3位水仙花數————先定義3個數其中一個為1--9;2個為0--9;(用for迴圈) 再用如果a定義為1--9那麼用100*a來表示百位;如果b或者c定義是0--9

m=m/10;

水仙花數是指一個 n 位數 ( n≥3 ),每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153)。 所以可以依次通過模除求得每個位上的值,然後做n次冪後相加,再判斷是否與本身相等,從而得到是否為水仙花數的結論。 以求所有三位

}

while(m!=0);

#include #include int main() { for(unsigned int i = 100; i 0; j /= 10) { c += (unsigned int)pow(j % 10, b); } if (c == i) { printf("%dn", c); } } return 0; } 想要更大的數可以用 __int64 型別,那樣 pow() 函式支援不了那麼大的,得

if(sum==i)

1000以內的水仙花數: #include int main(){ int i,j,k; for(i=1;i

printf("%d ",i);

在第一個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得到的是確定值,程式執行正常。 修改後源

}

printf("n");

先弄懂什麼叫水仙花數。水仙花數就是一個三位數,它的個位十位和百位的數的立方加起來和還是這個數,就是水仙花數! 例如:153=1*1*1 + 5*5*5 + 3*3*3 你的想法。。。是對的~ 原始碼: #include #include int sxh(int i) { if (((i/100)*(i/100)*(

return 0;

0842-水仙花數(迴圈)時間:1000毫秒記憶體:32768K位元組總提次數:1273次成功提交次數:633次判題規則:嚴格比較問題描述春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的:“水仙花數”是指一個三位數,它的各

}

執行結果:

153 370 371 407

#include using namespace std; int fun(int n) { if (n==1) return 10; else return (10*fun(n-1)); } int num(int n,int a) { if (n==1) return a; else return (a*num(n-1,a)); } void shuixianhua(int n) { int i,j,c; for (i=fun(n-1);i0)

Press any key to continue

樓主你好~~ 按照你的程式,你可能對於水仙話數有誤解 首先,水仙花數是指一個 n 位數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3 + 3^3 = 153或3^3+7^3+0^3=370) 注意:是每個 位上 的數字。 而你的原始碼寫的

c語言如何學習:【3】求水仙花數 第2張

方法二

#include <stdio.h>

所謂的“水仙花數”是指一個三位數其各位數字的立方和等於該數本身,例如153是“水仙花數”,因為:153 = 1^3 + 5^3+ 3^3 。 下面是完整的C語言程式設計程式碼: 執行結果:result is:153 370 371 407 擴充套件資料 常見水仙花數 水仙花數又稱阿姆斯特朗數。

int main()

#include #include void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n

{

int i,j,k,n;

用for不是更簡單嗎?下面給你兩種方法: # include void main () { int i,j,k; for(i=1;i

printf("水仙花數:",n);

方法:先弄懂什麼是水仙花數:: 水仙花數是指一個n(>=3)位數字的數,它等於每個數字的n次冪之和。 3位水仙花數————先定義3個數其中一個為1--9;2個為0--9;(用for迴圈) 再用如果a定義為1--9那麼用100*a來表示百位;如果b或者c定義是0--9

for(n=100;n<1000;n++)

C語言的"水仙花數"程式碼 main(){ int i,j,k; for(i=1;i

{

i=n/100;

#include int main() { int i; for( i=100; i

j=(n-i*100)/10;

#include "stdio.h" #include "math.h" void shuixianhua() {//水仙花數 int i,m=3,sum,count=0,temp; printf("水仙花數:n"); for(i=100;i

k=n-i*100-j*10;

#include #include void main() { int i,j,k,n,c=0; for(n=999;n>=100;n--) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出個位*/ if(n==i*i*i+j*j*j+k*k*k) { c++; if(c==2) break; } } printf("%dn",n); }

if(n==i*i*i+j*j*j+k*k*k)

//提示:153 370 371 407 是水仙花數 #include void main() { int i,j,k,n; printf("請輸入一個三位整數n"); scanf("%d",&n); i=n/100; /*分解出百位*/ j=n/10%10; /*分解出十位*/ k=n%10; /*分解出個位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%dn ",n);

#include int main() {int a,b,c; for(a=1;a

}

return 0;

0842-水仙花數(迴圈)時間:1000毫秒記憶體:32768K位元組總提次數:1273次成功提交次數:633次判題規則:嚴格比較問題描述春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的:“水仙花數”是指一個三位數,它的各

}

結果:

水仙花數:153

首先你需要引入標頭檔案math.h;然後下面是程式碼:int n=1000,num=0; //num代表水仙花數個數while(n

370

371

407

c語言如何學習:【3】求水仙花數 第3張

方法三

#include <stdio.h>

所謂的“水仙花數”是指一個三位數其各位數字的立方和等於該數本身,例如153是“水仙花數”,因為:153 = 1^3 + 5^3+ 3^3 。 下面是完整的C語言程式設計程式碼: 執行結果:result is:153 370 371 407 擴充套件資料 常見水仙花數 水仙花數又稱阿姆斯特朗數。

int main()

#include #include void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n

{

int i,j,k,n;

用for不是更簡單嗎?下面給你兩種方法: # include void main () { int i,j,k; for(i=1;i

printf("水仙花數:",n);

方法:先弄懂什麼是水仙花數:: 水仙花數是指一個n(>=3)位數字的數,它等於每個數字的n次冪之和。 3位水仙花數————先定義3個數其中一個為1--9;2個為0--9;(用for迴圈) 再用如果a定義為1--9那麼用100*a來表示百位;如果b或者c定義是0--9

for(n=100;n<1000;n++)

C語言的"水仙花數"程式碼 main(){ int i,j,k; for(i=1;i

{

i=n/100;

#include int main() { int i; for( i=100; i

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

//提示:153 370 371 407 是水仙花數 #include void main() { int i,j,k,n; printf("請輸入一個三位整數n"); scanf("%d",&n); i=n/100; /*分解出百位*/ j=n/10%10; /*分解出十位*/ k=n%10; /*分解出個位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%dn ",n);

#include int main() {int a,b,c; for(a=1;a

}

return 0;

0842-水仙花數(迴圈)時間:1000毫秒記憶體:32768K位元組總提次數:1273次成功提交次數:633次判題規則:嚴格比較問題描述春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的:“水仙花數”是指一個三位數,它的各

}

輸出結果:

水仙花數:153

首先你需要引入標頭檔案math.h;然後下面是程式碼:int n=1000,num=0; //num代表水仙花數個數while(n

370

371

407

c語言如何學習:【3】求水仙花數 第4張

擴充套件閱讀,以下內容您可能還感興趣。

C語言輸出【所有的】水仙花數

#include <stdio.h>

#include <math.h>

int main()

{

for(unsigned int i = 100; i <= 0xffffffff; i++)

{

unsigned int a = i;

int b = 0;

while(a)

{

a /= 10;

b++;

}

unsigned int c = 0;

for (unsigned int j = i; j > 0; j /= 10)

{

c += (unsigned int)pow(j % 10, b);

}

if (c == i)

{

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

}

}

return 0;

}

想要更大的數可以用 __int64 型別,那樣 pow() 函式支援不了那麼大的,得自己算了。

------------------------------------------------------

把你的檔名改成.cpp,不然會按C語言的方式來編譯,C語言和C++還是有一點差7a686964616fe59b9ee7ad9431333262373939別的,你不想改的話可以把程式碼改成下面的樣子:

#include <stdio.h>

#include <math.h>

int main()

{

unsigned int i;

for( i= 100; i <= 0xffffffff; i++)

{

unsigned int a = i;

int b = 0;

unsigned int c = 0;

unsigned int j;

while(a)

{

a /= 10;

b++;

}

for (j = i; j > 0; j /= 10)

{

c += (unsigned int)pow(j % 10, b);

}

if (c == i)

{

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

}

}

return 0;

}

(c語言程式)編寫程式求100以內的水仙花數,水仙花數是指一個n(>=3)位數字的數

1000以內百的度水仙問花答數版:權#include <stdio.h>

int main()

{ int i,j,k;

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

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

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

        if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)

          printf("%d%d%dn",i,j,k);

  return 0;

}

c語言 輸出所有水仙花數

在第一zhidao個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("%dn",s);

            }

        }

    }

    getchar();

}

程式執行結果見插圖。

C語言求水仙花數問題

for(int n=100;n<1000;n++){ 後面加上一句 result=0.0;

if(result==n) printf("%d是水仙花數\n",n); 這句應該在第二個for迴圈外追問你說這是的,我發帖就才發現這個了,但是拿到外面了結果還是不出來

C語言,輸出所有水仙花數,求思路指導。

先弄懂什麼叫水仙花百數。水仙花數就是一個三位數,它的個位十位和百度位的數的立方加起來和還是這個數,就是水仙花數!專

例如:153=1*1*1 + 5*5*5 + 3*3*3

你的想法。。。是對的~

原始碼:

#include <math.h>

#include <stdio.h>

int sxh(int i) {

if (((i/100)*(i/100)*(i/100)+((i/10)%10)*((i/10)%10)*((i/10)%10)+(i%10)*(i%10)*(i%10))==i)

return 1;

else return 0;

}

int main() {

int q;

for(q=100;q<=999;q++) {

if(sxh(q)==1)

printf("%d 是水屬仙花數\n",q);

}

return 0;

}

標籤: 語言 學習 水仙花
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/o2kmg2.html