【3】求水仙花數 c語言如何學習
- IT科技
- 關注:1.55W次
第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),下面我就簡單介紹下如何求水仙花數
材料/工具
方法
方法一
#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) 注意:是每個 位上 的數字。 而你的原代碼寫的
方法二
#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
方法三
#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語言輸出【所有的】水仙花數
#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/zh-mo/dianzi/o2kmg2.html