C语言根据日期求星期(分段计算方式)

发布时间:2018-10-30 11:41:09   来源:文档文库   
字号:

C语言根据日期求星期

今天是20071017日,星期六. 现在告诉你一个日期,你能回答今天是星期几吗?

输入描述:

输入数据有多组,每组占一行,输入三个整数year(0

输出描述:

对于每组输入数据,输出一行,表示星期几,如果不合法输出“illegal”。

 

以下为代码:

 

 1 #include

 2 char date[7][7] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

 3 //判断年份是否为闰年

 4 int isLeap(int year)

 5 {

 6     if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

 7         return 1;

 8     return 0;       

 9 }

10

11 int main()

12 {

13     int year,month,day;

14     //平年各个月的天数

15     int year1[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

16     //闰年各个月的天数

17     int year2[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};

18     //days为距离公元第一天的天数

19     int days = 0, k = 0, j = 0;

20     char *getDate;

21     while(scanf("%d %d %d", &year,&month,&day) != EOF)

22     {

23         if(year<= 0 || year >= 10000 || month < 0 || month >= 13 || day < 0 || day >= 32)

24         {

25             printf("illegal\n");

26             continue;

27         }

28         if(month == 2)

29         {

30             if(isLeap(year))

31             {

32                 if(day > year2[month])

33                 {

34                     printf("illegal\n");

35                     continue;

36                 }

37             }

38             else

39             {

40                 if(day > year1[month])

41                 {

42                     printf("illegal\n");

43                     continue;

44                 }

45             }

46

47         }

48         //现在的日期与公元第一天开始相隔的天数

49        

50         for(k = 1;k < year;k++)

51         {

52             if(isLeap(k))

53                 days = days + 366;

54             else

55                 days = days + 365;

56         }

57        

58         for(j = 0; j < month; j++)

59         {

60             if(isLeap(year))

61                 days = days + year2[j];

62             else

63                 days = days + year1[j];

64         }

65         days = days + day;

66         //除以7求余就可以求出星期

67         getDate = date[days % 7];

68         printf("%s\n", getDate);

69         //数据清零

70         days = 0;

71     }

72 }

 

 

测试数据:

 

在这个测试中遇到了一些问题,在C语言中,While循环里面的for循环不能再声明变量,否则会报错。

本文来源:https://www.2haoxitong.net/k/doc/a80480073a3567ec102de2bd960590c69ec3d8f8.html

《C语言根据日期求星期(分段计算方式).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式