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 a,b,c;a=n/100;b=n/10%10;c=n%10;if(n==a*a*a+b*b*b+c*c*c)return 1;elsereturn 0; } int main() {int m,n,i,x,y;while(scanf("%d%d",&m,&n)!=EOF){x=1;for(i=m;i<=n;i++){if(narcissus(i)==1){if(x==1){printf("%d",i);x=0;}elseprintf(" %d",i);}}if(x==1){printf("no");}printf("\n");}return 0; }
總結
以上是生活随笔為你收集整理的ZZULIOJ 1096: 水仙花数(函数专题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python图像分类_用于实现用pyth
- 下一篇: OJ1041: 数列求和2(高阶递推)