【計算星期幾】
問題描述 :
已知1900年1月1日為星期一,寫一個C++程式,以算出西元某年某月某日為星期幾。
輸入說明 :
程式的輸入包含n+1行數字,第一行包含一個正整數n,1 ≤ n ≤ 30,代表有n筆測試資料。第二行開始有n筆輸入yyyy, mm, dd分別代表西元年月日以空格隔開,其中的3000≧yyyy≧1900。
輸出說明 :
輸出n筆測試資料日期的星期順序,週日為0週一為1其餘依此類推。
已知1900年1月1日為星期一,寫一個C++程式,以算出西元某年某月某日為星期幾。
輸入說明 :
程式的輸入包含n+1行數字,第一行包含一個正整數n,1 ≤ n ≤ 30,代表有n筆測試資料。第二行開始有n筆輸入yyyy, mm, dd分別代表西元年月日以空格隔開,其中的3000≧yyyy≧1900。
輸出說明 :
輸出n筆測試資料日期的星期順序,週日為0週一為1其餘依此類推。
【輸入範例】 | 【輸出範例】 |
3 1900 1 1 2000 1 1 2018 5 5 | 1 6 6 |
#include<iostream>
using namespace std;
int main()
{
int n,y,m,d,sum;
int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
cin >> n;
for (int i = 0;i < n; i++)
{
sum = 0;
cin >> y >> m >> d;
for (int j = 1900;j < y; j++)
{
if ((j % 4 == 0 && j % 100 != 0) || j % 400 == 0)
sum += 366;
else
sum += 365;
}
for (int k = 0;k < m - 1; k++)
{
if (((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) && k == 1)
sum++;
sum += arr[k];
}
sum += d;
cout << sum % 7 << endl;
}
return 0;
}
沒有留言:
張貼留言