ZZULIOJ:1096: 水仙花数(函数专题)
題目描述
春天是鮮花的季節(jié),水仙花就是其中最迷人的代表,數(shù)學(xué)上有個(gè)水仙花數(shù),他是這樣定義的:
“水仙花數(shù)”是指一個(gè)三位數(shù),它的各位數(shù)字的立方和等于其本身,比如:153=13+53+33。
現(xiàn)在要求輸出所有在m和n范圍內(nèi)的水仙花數(shù)。?
要求程序定義一個(gè)narcissus()函數(shù)和一個(gè)main()函數(shù),narcissus()函數(shù)判斷一個(gè)整數(shù)n是否為水鮮花數(shù),其余功能在main()函數(shù)中實(shí)現(xiàn)。
int narcissus(int n)
? ? ? ? {
? ? ? ? ? ?? //判斷n是否為水仙花數(shù), 若是函數(shù)返回1,否則返回0
? ? ? ?? }
對(duì)于C/C++代碼的提交,本題要求必須通過(guò)定義narcissus函數(shù)和main函數(shù)實(shí)現(xiàn),否則,提交編譯錯(cuò)誤,要提交完整的程序。
輸入
輸入數(shù)據(jù)有多組,每組占一行,包括兩個(gè)整數(shù)m和n(100<=m<=n<=999)。
輸出
對(duì)于每個(gè)測(cè)試實(shí)例,要求輸出所有在給定范圍內(nèi)的水仙花數(shù),就是說(shuō),輸出的水仙花數(shù)必須大于等于m,并且小于等于n,如果有多個(gè),則要求從小到大排列在一行內(nèi)輸出,之間用一個(gè)空格隔開(kāi);
如果給定的范圍內(nèi)不存在水仙花數(shù),則輸出no;
每個(gè)測(cè)試實(shí)例的輸出占一行。
樣例輸入?Copy
100 120
300 380
樣例輸出?Copy
no
370 371
提示
在不知道m(xù)到n之間有多少個(gè)水仙花數(shù)的情況下,如何控制兩個(gè)數(shù)之間有空格,而最后一個(gè)水仙花數(shù)之后沒(méi)有空格?解決方法之一是:第一個(gè)水仙花數(shù)之前不加空格,而其后每個(gè)水仙花數(shù)之前加空格。而通過(guò)一個(gè)標(biāo)識(shí)變量可以判斷出是否是第一個(gè)水仙花數(shù)。
初做多實(shí)例測(cè)試,要注意變量賦初值的位置。
源代碼
#include<stdio.h> int narcissus(int n); int main() {int m,n;while(~scanf("%d%d",&m,&n)){int flag=0,first=0;//flag為有無(wú)解標(biāo)志,first為是否為第一個(gè)標(biāo)志 for(int i=m;i<=n;i++){if(narcissus(i)){flag=1;//判斷為有解 if(first==0)//判斷是否為第一個(gè)數(shù) {printf("%d",i);//屁股后面無(wú)空格輸出 first=1;continue;//使用continue,否則會(huì)重復(fù)輸出第一個(gè)數(shù) }if(first==1)//如果不是第一個(gè)數(shù) {printf(" %d",i);//頭前面加空格 continue;}}}if(flag==0)//若有無(wú)解標(biāo)志則輸出no {printf("no");}printf("\n");} } int narcissus(int n)//判斷是否為水仙花數(shù) {int a=n/100;int b=(n-100*a)/10;int c=n%10;if(a*a*a+b*b*b+c*c*c==n){return 1;}else return 0; }總結(jié)
以上是生活随笔為你收集整理的ZZULIOJ:1096: 水仙花数(函数专题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 中国城市政治地位,政治地位决定一切!!!
- 下一篇: 百度贴吧图片爬取,利用 pillow 将