C语言 某年每个月的第一天是星期几并统计后输出

1 篇文章 0 订阅
1 篇文章 0 订阅

 编写程序:假定2000年1月1日是Sunday(星期天),计算某年的每月1日是星期几,统计这12个日子里的星期日到星期六各有几天,把统计结果以如下格式写入磁盘的文本文件data.dat中。输入:一个大于2000的整数表示年;输出:data.dat文件。

#include<stdio.h>
day(int *a,int *b,int *c,int *d,int *e,int *f,int *g,int *h)
{
	int m;
	m=*a%7;
	switch(m)
	{
	case 1:++*b;break;
	case 2:++*c;break;
	case 3:++*d;break;
	case 4:++*e;break;
	case 5:++*f;break;
	case 6:++*g;break;
	case 0:++*h;break;
	}
}

int main()
{
	int year,result,days=0,first=7,i=0;

	int cha=2000;
	int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0;
	scanf("%d",&year);
	while(cha<year)
	{
	if(cha%4==0&&cha%100!=0||cha%400==0)
	{
		cha++;
		days+=366;
	}
	else
	{
		cha++;
		days+=365;
	}
	}
	switch(days%7)
	{
	case 1:first=7;break;
	case 2:first=1;break;
	case 3:first=2;break;
	case 4:first=3;break;
	case 5:first=4;break;
	case 6:first=5;break;
	case 7:first=6;break;
	}
	if(year%4==0&&year%100!=0||year%400==0)
	{
	int b[12]={first,first+3,first+4,first,first+2,first+5,first,first+3,first+6,first+1,first+4,first+6};
	for(i=0;i<12;i++)
	day(b+i,&a1,&a2,&a3,&a4,&a5,&a6,&a7);
	}
	else
	{
	int a[12]={first,first+3,first+3,first+6,first+1,first+4,first+6,first+2,first+5,first,first+3,first+5};
	for(i=0;i<12;i++)
	day(a+i,&a1,&a2,&a3,&a4,&a5,&a6,&a7);
	}
	printf("Sunday %d\nMonday %d\nTuesday %d\nWednesday %d\nThursday %d\nFriday %d\nSaturday %d\n",a7,a1,a2,a3,a4,a5,a6);
 } 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值