13号星期几

试题描述

   请编程统计:从1900年1月1日(当天是星期一)开始经过的n年当中,每个月的13号这一天是星期一、星期二、星期三、……、星期日的次数分别是多少?

输入

   输入一个整数n (1 <= n <= 100)。

输出

   输出7个整数(依次是星期一、星期二、星期三、……、星期日的次数),各数间以空格相隔。

输入示例

   1

输出示例

   1 3 1 2 2 2 1

数据范围

   对于100%的数据,1 <= n <= 100

参考代码(模块化易懂)

#include<stdio.h>
#include<stdlib.h>
int ldata[12]={31,28,31,30,31,30,31,31,30,31,30,31},count[7]={0};
typedef struct Date *DATE;
struct Date{int week;int year;int mouth;int day;};
int main()
{
	DATE date=(DATE)malloc(sizeof(*date));
	void dateplus(DATE date);
	int N;
	scanf("%d",&N);
	date->year =1900;
	date->mouth=1;
	date->day=1;
	date->week=1;
	while(date->year<1900+N)
	{
		dateplus(date);
		if(date->day==13)
			count[date->week-1]++;
	}
	for(int i=0;i<7;i++)
		printf("%d ",count[i]);
	return 0;
}

void dateplus(DATE date)
{
	date->day ++;
	date->week ++;
	if (date->year%4==0&&(date->year%100!=0||date->year%400==0)) ldata[1]=29;
		else ldata[1]=28;
	if(date->day>ldata[date->mouth-1])
	{
		date->mouth++;
		date->day=1;
	}
	if(date->mouth>12)
	{
		date->mouth=1;
		date->year++;
	}
	if(date->week>7) date->week=1;
	return ;
}
Code language: PHP (php)
 如未特殊声明,文章均为原创。
 本文标题:13号星期几
 本文链接:https://manwish.cn/article/13%e5%8f%b7%e6%98%9f%e6%9c%9f%e5%87%a0.html

留下评论