【入门】今天星期几
***题目描述***
编一程序实现: 由输入1980年以后的任意一个日期后,计算机能打印出该日期是星期几。日期肯定合法,绝不会出现类似-23年13月52日的情况 ,已知1980年1月1日是星期二。
输入
年 月 日 日期有3个整数组成,中间用空格隔开
输出
一个整数星期 星期用1 2 3 4 5 6 7表示 (若是星期日就输出7) 样例
输入
2009 1 2
输出
5
分析如下:
主要是找出闰年与普通年的区别,求出总天数,求出其对7的余数,因为1月1日为星期二,故再加上1即可。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,year,mouth,day;
int count=0,count1=0,count2=0,a=0,sum=0;
//count求的是在两者之间有多少闰年
//count1求的是到所给月份之间包含几个31天的月份
//count2求的是在其间有几个30天的月份
//a代表的是所给的呢一年的二月份的天数
//sum是从1980年的第一开始到所给日期的总天数
scanf("%d%d%d",&year,&mouth,&day);
if(year>=1980&&mouth>0&&mouth<=12&&day>0&&day<=31)
{
for(i=1980;i<year;i++)
{
if((i%4==0&&i%100!=0)||(i%400==0))
count++;
}
for(j=1;j<mouth;j++)
{
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12)
count1++;
if(j==4||j==6||j==9||j==11)
count2++;
if(j==2)
{
if((year % 4 == 0 && year % 100 !=0)||(year % 400 ==0 ))
a=29;
else
a=28;
}
}
sum=(year-1980)*365+count+count1*31+count2*30+a+day;
printf("%d",sum%7+1);
}
else
printf("输入有误");
return 0;
}