2018年5月12日 星期六

C++計算星期幾

【計算星期幾】



 問題描述 :

已知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;
}

沒有留言:

張貼留言