int li(int n)
我們提供的服務有:成都網站制作、網站建設、微信公眾號開發、網站優化、網站認證、柳林ssl等。為近1000家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的柳林網站制作公司
{ return n*n*n;
}
int shuixian(int n)
{
int b,s,g;
b=n/100;
s=n/10%10;
g=n%10;
if((li(b)+li(s)+li(g))==n)
return 1;
return 0;
}
int main()
{
int i;
scanf("%d",i);
if(shuixian(i))
printf("%d\n",i);
return 0;
}
水仙花數是指一個 n 位數 ( n≥3 ),每個位上的數字的 n 次冪之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。
所以可以依次通過模除求得每個位上的值,然后做n次冪后相加,再判斷是否與本身相等,從而得到是否為水仙花數的結論。
以求所有三位數水仙花數為例,代碼如下,其它相似。
#includestdio.h
#includestdlib.h
#includestdbool.h
int?cube(const?int?n){//計算立方。如果是四位則是四次方,以此類推。
return?n*n*n;
}
int?isNarcissistic(const?int?n){//計算是否為水仙花數。
int?hundreds=n/100;//百位
int?tens=n/10-hundreds*10;//十位
int?ones=n%10;//個位
return?cube(hundreds)+cube(tens)+cube(ones)==n;//如果相等,則為水仙花數。
}
int?main(void){
int?i;
for(i=100;i1000;++i){//對所有三位數判斷。
if(isNarcissistic(i))//如果是則輸出。
printf("%d\n",i);
}
return?0;
}
在這里只寫出N為999以內的整數,如果樓主需要N為更大的整數的話,稍微改動一下調用函數就好啦!希望對樓主有幫助。
#include "stdio.h"
int f(int x)
{
if(x==(x/100)*(x/100)*(x/100)+(x%100/10)*(x%100/10)*(X%100/10)+(x%10)*(x%10)*(x%10))
printf("%d",x);
}
main()
{
int a;
scanf("%d",a);
f(a);
}
本程序已在Visual Studio 2008調試通過
#include "stdio.h"
int fun(int a[])//子函數中查找100~999之間的水仙花數
{int m,x,y,z,i=0;
for(m=100;m999;m++)
{x=m%10;//分解出個位數
y=(m-x)/10%10;//分解出十位數
z=m/100;//分解出百位數
if(x*x*x+y*y*y+z*z*z==m)//判斷每位數的立方的和是否與原數相等
{a[i]=m;i++;}}//若相等則存入數組
return(i);//返回數組中水仙花數的個數以方便在主函數中輸出
}
void main()
{int fun(int a[]);//子函數先定義后使用
int a[20],i,k;
k=fun(a);//調用子函數,注意本題中傳遞的是整個數組,所以子函數和主函數共用一個數組,系統分配的是同一片區域,雙向傳遞
for(i=0;ik;i++)//循環輸出
printf("%d=%d^3+%d^3+%d^3\n",a[i],a[i]/100,a[i]/10%10,a[i]%10);
}//輸出結果為 153=1^3+5^3+3^3 370=3^3+7^3+0^3 371=3^3+7^3+1^3 407=4^3+0^3+7^3
你看一下如果還有什么問題再問我
當前題目:c語言水仙花主函數調用 c語言水仙花數函數專題
標題路徑:http://vcdvsql.cn/article36/ddoeisg.html
成都網站建設公司_創新互聯,為您提供虛擬主機、云服務器、做網站、品牌網站制作、網站策劃、動態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯