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