給定乙個日期,輸出這個日期是該年的第幾天。time limit
memory limit
ossource
1000 ms
32768 kb
windows
c語言程式設計練習(一)
輸入資料有多組,每組佔一行,資料格式為yyyy/mm/dd組成,具體參見sample input ,另外,可以向你確保所有的輸入資料是合法的。
對於每組輸入資料,輸出一行,表示該日期是該年的第幾天。input
output
1985/1/20
202006/3/12
71給定乙個日期,輸出這個日期是該年的第幾天。
計算這一天是這一年的第幾天,可以理解為到那一天為止,經歷了多少天,也就是把前面的月份天數加起來,加上天數,如果是一月那麼,天數即為日期數。
要注意到問題之中特殊的地方,比如閏年會在2月多一天先貼ac**上來吧
#include
using
namespace std;
intmain()
;char m,n;
while
(cin >> year >> m >> month >> n >> day)
else
for(
int i =
0; i < month; i++
) cout << count_day
=29;}
return0;
}
定義變數、陣列
int year;
int month;
int day;
int count_day;
//用於儲存日期累加值
int month_day[13]
=;char m,n;
//用於輸入給定標準格式中的"/"
之所以將月份陣列中的month_day[0]=0,是因為如果輸入的月份是一月,那麼輸出的天數就是日期本身
之所以將二月一上來就定義為29天是因為,我覺得判斷乙個年份是閏年,比判斷乙個年不是閏年稍微簡單一點。其實只要整體的邏輯在,ac是沒有問題的下面就是對年份是否是閏年進行乙個判斷了
if
((year %4==
0&& year %
100!=0)
||(year %
400==0)
)else
(其實還是還是覺得用乙個變數去儲存(a+b)的值好一點,不然在書寫上有點麻煩)
接下來就是要輸出結果了
for
(int i =
0; i < month; i++
) cout << count_day/輸出累加的天數,並換行[endl;]使得格式正確
最後一行的**是我周賽沒有ac的原因
month_day[2]
=29;
這段**是為了讓month_day[2](即二月份的天數)的值在運算之後依然會保持原有的month_day[2]=29,這樣在計算完一次閏年的之後大於二月的天數時就會出現錯誤
【賽後的想法】
當時一直沒能除錯出問題來,比較特殊的應該是,計算完乙個閏年的第幾天之後,再計算非閏年三月以後的天數時,就會出現錯誤,但是一直沒能進行這樣的測試,就是一直以為自己是對的。
其實可以用兩組陣列代表閏年的和非閏年的,這樣可能會清楚一點明了一點。
記錄第一次leetcode周賽
第二題 確定兩個字串是否接近 class solution word1中有word2中沒有的詞 或 word1中沒有word2有的詞 for int i 0 i 26 i 排序 arrays.sort w1 arrays.sort w2 排序後不同 直接錯 即字元頻率序列必相同 for int i ...
第一次省賽
第一次出去打比賽,懷著又緊張又激動的情緒到了濟南。熱身賽因為新生不熟悉pc 2被分到了大佬組,見識到了大佬的實力,可能原來只是知道學長學姐很強,但始終沒切身體會過,而這次就近距離地感受到了大佬的實力,默默地安靜呆著,圍觀大佬解題,當然心裡也是默默想著以後我也要變成他們這樣 更強當然是更好了,哈哈哈 ...
第一次組隊賽
b 你有n個問題,你已經估計了第i個問題的難度為ci,現在你想使用這些問題去構造乙個問題集。比賽的問題集必須包含至少兩個問題,而且比賽的總難度必須至少為l至多為r,此外最簡單的問題和最難的問題之間的差異至少為x請您找出能夠選擇的問題集的數量。第一行有t組輸入 1 t 10接下來一行輸入n,l,r,x...