最新文章:

首页 2)SwustOj

程序设计C 实验二 题目三 计算生日是星期几(0078)

发布时间:2017年11月30日 评论数:抢沙发 阅读数:693

    编写一个程序,只要输入年月日,就能回答那天是星期几。

    Description

    输入一个日期,包括年、月、日。(一组测试数据)

    Input

    输出这个日期是星期几。

    Output
    1
    2
    3
    1 1 1
    2 1 1
    2006 7 10
    Sample Input
    1
    2
    3
    Monday
    Tuesday
    Monday
    Sample Output

    1、 已知公元1 年1 月1 日是星期一 2、 算法提示:如果输入的是2006 年3 月12 日,计算方法是 (1) 先计算从公元0001 年初(0001-1-1)到2005 年末(2005-12-31)共多少天,注意其中 有闰年,闰年是366 天,平年是365 天。闰年的判断条件满足(见教材例3.8 题): (( year%4==0 && year%100!=0 )||(year%400==0)) (2) 然后再计算2006 年1 月1 日到2006-3-12 是多少天。注意同样判断本年度是否闰年, 即二月份是28 天还是29 天。 (3) 上述两部分相加即从公元0001 年初(0001-1-1)到2006 年末(2006-3-12)的天数, 用该天数模7(total%7)即得到星期数。

    Hint

    西南科技大学计算机学院程序设计C实验指导书 v1.2

    #include<stdio.h>
    int main()
    {
    	int year,month,day,days;
    	int a[12]={0,31,28,31,30,31,30,31,31,30,31,30};
    	while(~scanf("%d %d %d",&year,&month,&day))
    	{
    		days=0;
    		for(int i=1;i<year;i++)
    		{
    			if((i%4==0&&i%100!=0)||(i%400==0))days+=366;
    			else days+=365;
    		}
    		for(int i=1;i<month;i++)days+=a[i];
    		days+=day;
    		if((year%4==0&&year%100!=0)||(year%400==0))days++;
    		int m=days%7;
    		switch(m)
    		{
    			case 2:printf("Tuesday\n");break;
    			case 3:printf("wednesday\n");break;
    			case 4:printf("Thursday\n");break;
    			case 5:printf("Friday\n");break;
    			case 0:printf("Sunday\n");break;
    			case 1:printf("Monday\n");break;
    			case 6:printf("Saturday\n");break;
    		}
    	}
    	return 0;
    }

二维码加载中...
本文作者:行者      文章标题: 程序设计C 实验二 题目三 计算生日是星期几(0078)
本文地址:https://www.20a.top/?post=164
版权声明:若无注明,本文皆为“我的小世界”原创,转载请保留文章出处。