c语言中闰年 日期 天数 统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形
生活随笔
收集整理的這篇文章主要介紹了
c语言中闰年 日期 天数 统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
常識:
1、3、5、7、8、10、12月份,每個月31天。2月閏年有29天,非閏年28天其他月份,每月30天
閏年:一年有365天,閏年有366天,所謂閏年,即能被4整除且不能被100整除的年份,或是能被400整除的年份;
這兩次比賽都考了這,我每月有多少天都分不清啊啊啊,怎么做!!!所以今天我特意整理整理
題目描述
有些西方人比較迷信,如果某個月的13號正好是星期五,他們就會覺得不太吉利,用古人的說法,就是“諸事不宜”。請你編寫一個程序,統計出在某個特定的年份中,出現了多少次既是13號又是星期五的情形,以幫助你的迷信朋友解決難題。
說明:(1)一年有365天,閏年有366天,所謂閏年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用戶輸入的年份肯定大于或等于1998年。
輸入
輸入只有一行,即某個特定的年份(大于或等于1998年)。
輸出
輸出只有一行,即在這一年中,出現了多少次既是13號又是星期五的情形。
樣例輸入
1998
樣例輸出
3
/* 因為1998年1月2日為星期五,然后計算給定年份每個月的13號與1998年1月2日 相差的天數,如果天數取模7為0那么即為星期五 */#include <bits/stdc++.h>using namespace std;int year[2][13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int judge(int y)//判斷閏年 {if(y % 400 == 0 || y % 100 != 0 && y % 4 == 0)return 1;return 0; }int calcul(int y, int m, int d)//計算天數 {int sum = (y-1)*365 + (y-1)/4 - (y-1)/100 + (y-1)/400;int k = judge(y);for(int i = 1; i < m; i++)sum += year[k][i];sum += d;return sum; }int main () {int y;scanf("%d", &y);int ans = 0;int index = calcul(1998, 1, 2);for(int i = 1; i <= 12; i++){int k = calcul(y, i, 13) - index;if(k % 7 == 0) ans++;}printf("%d\n", ans);return 0; }總結
以上是生活随笔為你收集整理的c语言中闰年 日期 天数 统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (矩阵快速幂)解所有类似Fibonacc
- 下一篇: mysql数据异常增长_mysql表到一