標題:
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
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void){
start: // 重新計算起始點
int year, month, day, a=0, b=0, total = 0; // a = 平年, b = 閏年, total = 總天數
while (cin >> year >> month >> day){
/* 判斷輸入之數字是否為有效數字 */
if (year > 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31){
if (month == 4 || month == 6 || month == 9 || month == 11 && day >= 1 && day <= 30){
cout << " Error" << endl;
goto start;
}
/* 判斷某年是為閏年或平年 */
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ // 判斷完成時,若為平年,a 為 1;若為閏年,b 為 1
a++;
}else{
b++;
}
/* 判斷月份若是 2月,輸入之天數是否為有效數字 */
if (a == 1 && month == 2 && day > 29){
cout << "Error" << endl;
goto start;
}else if (b == 1 && month == 2 && day > 28){
cout << "Error" << endl;
goto start;
} // 若輸入數字為無效數字則提醒使用者並返回 start : 做重新輸入
/* 開始計算天數 */
total = day; // 將剩餘天數相加
switch ( month ) {
case 12: total += 30;
case 11: total += 31;
case 10: total += 30;
case 9: total += 31;
case 8: total += 31;
case 7: total += 30;
case 6: total += 31;
case 5: total += 30;
case 4: total += 31;
case 3: total += 28;
case 2: total += 31;
}
/* 開始輸出天數 */
if (month == 1 && day == 1){
cout << "It is " << total << " day in " << year << endl;
}else if (b == 1 && total > 30){ // 若輸入之年為閏年時,天數則加 1。
cout << "It is " << total<< " days in " << year << endl; //(天數相加需在60後(一月:30天 + 二月:29天))
}else{
cout << "It is " << total << " days in " << year << endl;
}
}else{ // (與本程式最前端同判斷式)若使用者之輸入資料不符合規定,則返回start : 重新輸入
cout << "Error" << endl;
goto start;
}
}
//system("pause");
return 0;
}
複製代碼
作者:
b1081081
時間:
2010-10-9 11:36
#include <iostream>
using namespace std;
int main(){
int year,month,day,n=0;
int md[11] = {31,28,31,30,31,30,31,31,30,31,30};
while(cin >> year >> month >> day){
if((year%4==0) && (year%100!=0)){
md[1] = 29;
}else if((year%400==0)){
md[1] = 29;
}
else{
}
if(month > 12 || day > md[month-1]){
cout << "Error" << endl;
}else{
if(month > 1){
for(int i = 0; i < month - 1; i++){
n += md[i];
}
cout << "It is " << n + day << " days in " << year << endl;
}else if(month == 1 && day == 1){
cout << "It is " << day << " day in " << year << endl;
}else if(month == 1 && day > 1){
cout << "It is " << day << " days in " << year << endl;
}
}
n = 0;
md[1] = 28;
}
return 0;
}
複製代碼
作者:
p17johnny
時間:
2010-10-9 11:36
恨恨 我超討厭這題目
怒哪!! 真XX
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void){
int year,month,day;
while(cin>>year>>month>>day){
if(month==1&&day==1){
cout << "It is 1 day in " <<year<< endl;
continue;
}
int check ;
for(int a=1;a<=12;a++)
check = ( year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 1 : 0 ;
int date = day ;
switch ( month ) {
case 12: date += 30;
case 11: date += 31;
case 10: date += 29;
case 9: date += 31;
case 8: date += 31;
case 7: date += 30;
case 6: date += 31;
case 5: date += 30;
case 4: date += 31;
case 3: date += 29;
case 2: date += 31;
}
if( check == 1 && month >= 3 ) ++date ;
if(date<32){
cout<<"Error"<<endl;
break;
}else{
cout << "It is " << date << " days " << "in " <<year<< endl;
}
}
system("pause");
return 0;
}
複製代碼
作者:
chuangjoy
時間:
2010-10-9 11:36
#include <iostream>
using namespace std;
int main(){
int y, m, d;
while(cin >> y >> m >> d){
int a [13];
a[1] = 31;
a[2] = 28;
a[3] = 31;
a[4] = 30;
a[5] = 31;
a[6] = 30;
a[7] = 31;
a[8] = 31;
a[9] = 30;
a[10] = 31;
a[11] = 30;
a[12] = 31;
switch(m){
case 12:
d = d + 334;
break;
case 11:
d = d + 304;
break;
case 10:
d = d + 273;
break;
case 9:
d = d + 243;
break;
case 8:
d = d + 212;
break;
case 7:
d = d + 181;
break;
case 6:
d = d + 151;
break;
case 5:
d = d + 120;
break;
case 4:
d = d + 90;
break;
case 3:
d = d + 59;
break;
case 2:
d = d + 31;
break;
case 1:
d = d + 0;
break;
}
}
return 0;
}
複製代碼
快掛了~
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2