1. 程式人生 > >SDUTOJ ----實驗四for迴圈結構

SDUTOJ ----實驗四for迴圈結構

水仙花數
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,是這樣定義的: “水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=13+53+33。 現在要求輸出所有在m和n範圍內的水仙花數。

Input

輸入資料有多組,每組佔一行,包括兩個整數m和n(100<=m<=n<=999)。

Output

對於每個測試例項,要求輸出所有在給定範圍內的水仙花數,就是說,輸出的水仙花數必須大於等於m,並且小於等於n,如果有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開; 如果給定的範圍內不存在水仙花數,則輸出no; 每個測試例項的輸出佔一行。

Sample Input

100 200 300 380

Sample Output

no

370 371

參考程式碼

#include<stdio.h>
#include<math.h>
int main()
{
	int m,n,count;
	while(scanf("%d%d",&m,&n)!=EOF)
	{
		count=0;
		for(int i=m;i<=n;i++)
		{
			int sum=pow(i/100,3)+pow(i/10%10,3)+pow(i%10,3);
			if(i==sum)
			{
				if(count==0)
				{
					printf("%d",i);
					count++;
				}
				else
				{
				printf(" %d",i);
				count++;	
				}
				
			}
		}
		if(count==0)
		{
			printf("no\n");
		}
        else
        {
        	printf("\n");
        }
		
	}
	return 0;
}

心得體會

這個題目需要注意的是格式的問題。首先,將第一個要輸出的數字與其他分隔開來的目的就是避免最後一個數字後面有空格,這是不允許的。其次,在最後輸出的時候做了判斷,這樣保證了輸出後的資料能夠切換到下一行。 (因為在迴圈裡面的輸出無法加換行符。)最後一點,也是最重要的,每一次的迴圈結束,count都要初始化為0,否則會影響下一組資料的判斷。