用数组取代复杂分支结构
题目:已知2012年1月25日是周三,编写一个程序,输入用“年/月/日”表示的一个2012年1月25日之后的日期,输出该日期的周几(星期天输出0)。
输入示范:2015/11/02
输出示范:
1
分析:因为2012年1月25日是周三,所以2012年1月22日是周天,可以从22日开始,求出来的天数除以7的余数,肯定就是周几,比如求出来余数为4,肯定就是周天之后的第四天,即周四。
#include<stdio.h>
int monthdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//设置好每个月的天数。
int main()
{
int year,month,date;
int days;
scanf("%d/%d/%d",&year,&month,&date);
int i;//循环用的变量。
for(i=2012;i<year;i++)//这个循环先求出从2012年到目标年份的1月1日 之前有多少天。
{
if(i%4==0&&i%100!=0||i%400==0)
{
days+=366;
}
else days+=365;
}
for(i=1;i<month;i++)
{
days+=monthdays[i];
}
days=days+date-22;
printf("这一天是周%d\n",days%7);
return 0;
}
DEV C++亲测可以。