Board logo

標題: 20101002-d466: 今天是第幾天呢 [打印本頁]

作者: buy    時間: 2010-10-2 10:39     標題: 20101002-d466: 今天是第幾天呢

小米是個很喜歡跨年的小孩

因為每到跨年夜電視上都有好多煙火可以看

每次在回味美麗的煙火的時候

小米就會想:到底今天是今年的第幾天呢?距離上次煙火有多久了阿?

她就會去問聰明的你

而你就要負責解答囉



輸入某年某月某日,判斷這一天是這一年的第幾天?

迷糊的小米可能會弄錯日期 如果他講出 4 月 31 這種東西請輸出 Error

輸入說明 :


每組測試資料有三個數字

分別是 year, month, day ( 用 int 處理即可 )

輸出說明 :


請參考範例輸出

範例輸入 :

若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。1995 10 31
2010 1 1
1993 5 32
範例輸出 :

It is 304 days in 1995
It is 1 day in 2010
Error提示 :



1. 閏年在二月以後記得要多加一天

2. 一月一日 day 必須單數

3. 年日月不合格式請輸出 Error

出處 :


麗山高中迴圈36題 (管理員:example)
作者: Alen    時間: 2010-10-9 11:36

  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void){

  5.     start:  // 重新計算起始點
  6.           int year, month, day, a=0, b=0, total = 0; // a = 平年, b = 閏年, total = 總天數
  7.           while (cin >> year >> month >> day){
  8.    
  9.           /* 判斷輸入之數字是否為有效數字 */
  10.           if (year > 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31){  
  11.              if (month == 4 || month == 6 || month == 9 || month == 11 && day >= 1 && day <= 30){
  12.                 cout << " Error" << endl;
  13.                 goto start;
  14.              }
  15.           /* 判斷某年是為閏年或平年 */
  16.           if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ // 判斷完成時,若為平年,a 為 1;若為閏年,b 為 1
  17.              a++;
  18.           }else{
  19.                 b++;      
  20.           }
  21.      
  22.          /* 判斷月份若是 2月,輸入之天數是否為有效數字 */
  23.          if (a == 1 && month == 2 && day > 29){
  24.             cout << "Error" << endl;
  25.             goto start;        
  26.          }else if (b == 1 && month == 2 && day > 28){
  27.                   cout << "Error" << endl;
  28.                   goto start;  
  29.          } // 若輸入數字為無效數字則提醒使用者並返回 start : 做重新輸入
  30.                      
  31.          /* 開始計算天數 */

  32.                
  33.                 total = day;  // 將剩餘天數相加
  34.                 switch ( month ) {
  35.                                   case 12: total += 30;
  36.                                   case 11: total += 31;
  37.                                   case 10: total += 30;
  38.                                   case 9: total += 31;
  39.                                   case 8: total += 31;
  40.                                   case 7: total += 30;
  41.                                   case 6: total += 31;
  42.                                   case 5: total += 30;
  43.                                   case 4: total += 31;
  44.                                   case 3: total += 28;
  45.                                   case 2: total += 31;
  46.                 }
  47.                
  48.                 /* 開始輸出天數 */
  49.                 if (month == 1 && day == 1){
  50.                    cout << "It is " << total << " day in " << year << endl;      
  51.                 }else if (b == 1 && total > 30){ // 若輸入之年為閏年時,天數則加 1。
  52.                    cout << "It is " << total<< " days in " << year << endl; //(天數相加需在60後(一月:30天 + 二月:29天))     
  53.                 }else{
  54.                       cout << "It is " << total << " days in " << year << endl;      
  55.                 }
  56.       
  57.        }else{ // (與本程式最前端同判斷式)若使用者之輸入資料不符合規定,則返回start : 重新輸入
  58.              cout << "Error" << endl;
  59.              goto start;
  60.        }
  61. }
  62.    
  63.    //system("pause");
  64.    return 0;
  65. }
複製代碼

作者: b1081081    時間: 2010-10-9 11:36

  1. #include <iostream>
  2. using namespace std;
  3. int main(){

  4. int year,month,day,n=0;
  5. int md[11] = {31,28,31,30,31,30,31,31,30,31,30};
  6. while(cin >> year >> month >> day){
  7. if((year%4==0) && (year%100!=0)){
  8. md[1] = 29;   
  9. }else if((year%400==0)){
  10. md[1] = 29;            
  11. }
  12. else{
  13.      }
  14. if(month > 12 || day > md[month-1]){
  15. cout << "Error" << endl;
  16. }else{
  17. if(month > 1){
  18. for(int i = 0; i < month - 1; i++){
  19. n += md[i];
  20. }
  21. cout << "It is " << n + day << " days in " << year << endl;
  22. }else if(month == 1 && day == 1){
  23. cout << "It is " << day << " day in " << year << endl;
  24. }else if(month == 1 && day > 1){
  25. cout << "It is " << day << " days in " << year << endl;      
  26. }
  27. }
  28. n = 0;
  29. md[1] = 28;
  30. }
  31. return 0;
  32. }
複製代碼

作者: p17johnny    時間: 2010-10-9 11:36

恨恨   我超討厭這題目
怒哪!!  真XX
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void){
  5.    
  6.     int year,month,day;
  7.     while(cin>>year>>month>>day){
  8.                                  if(month==1&&day==1){
  9.                                                cout << "It is 1 day in "  <<year<< endl;
  10.                                                continue;
  11.                                                }        
  12.                                  
  13.                                  
  14.     int check ;
  15.     for(int a=1;a<=12;a++)
  16.     check = ( year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 1 : 0 ;
  17.     int date = day ;
  18.    
  19.     switch ( month ) {
  20.          case 12: date += 30;
  21.          case 11: date += 31;
  22.          case 10: date += 29;
  23.          case 9: date += 31;
  24.          case 8: date += 31;
  25.          case 7: date += 30;
  26.          case 6: date += 31;
  27.          case 5: date += 30;
  28.          case 4: date += 31;
  29.          case 3: date += 29;
  30.          case 2: date += 31;         
  31.     }
  32.    
  33.     if( check == 1 && month >= 3 ) ++date ;
  34.          if(date<32){
  35.                      cout<<"Error"<<endl;
  36.                      break;
  37.     }else{
  38.     cout << "It is " << date << " days " << "in "  <<year<< endl;  
  39. }
  40. }

  41.     system("pause");
  42.     return 0;
  43. }
複製代碼

作者: chuangjoy    時間: 2010-10-9 11:36

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     int y, m, d;
  5.     while(cin >> y >> m >> d){
  6.               int a [13];
  7.               a[1] = 31;
  8.               a[2] = 28;
  9.               a[3] = 31;
  10.               a[4] = 30;
  11.               a[5] = 31;
  12.               a[6] = 30;
  13.               a[7] = 31;
  14.               a[8] = 31;
  15.               a[9] = 30;
  16.               a[10] = 31;
  17.               a[11] = 30;
  18.               a[12] = 31;
  19.               
  20.         switch(m){
  21.         case 12:
  22.               d = d + 334;
  23.               break;
  24.         case 11:
  25.               d = d + 304;
  26.               break;
  27.         case 10:
  28.               d = d + 273;
  29.               break;
  30.         case 9:
  31.               d = d + 243;
  32.               break;
  33.         case 8:
  34.               d = d + 212;
  35.               break;
  36.         case 7:
  37.               d = d + 181;
  38.               break;
  39.         case 6:
  40.               d = d + 151;
  41.               break;
  42.         case 5:
  43.               d = d + 120;
  44.               break;
  45.         case 4:
  46.               d = d + 90;
  47.               break;
  48.         case 3:
  49.               d = d + 59;
  50.               break;
  51.         case 2:
  52.               d = d + 31;
  53.               break;
  54.         case 1:
  55.               d = d + 0;
  56.         break;
  57.         }
  58.     }
  59. return 0;
  60. }
複製代碼
快掛了~




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2