zoukankan      html  css  js  c++  java
  • 算算今天是星期几

    题目描述:

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

    输入描述:

    输入数据有多组,每组占一行,输入三个整数year(0<year<10000), month(0<=month<13), day(0<=day<32).

    输出描述:

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

     

    以下为代码:

     1 #include <stdio.h>
     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循环不能再声明变量,否则会报错。

  • 相关阅读:
    周六,晴转雨
    时间概念
    2014-7-24-早
    2014-7-22
    [SPM_LAB]持续集成实验
    [软件测试_LAB2]使用Selenium进行自动化测试
    [软件测试_hw3]路径覆盖测试
    [软件测试_LAB1]安装junit和hamcrest及其使用
    [软件测试_hw2]Failure&Error
    [SPM_hw1]记一次项目经历
  • 原文地址:https://www.cnblogs.com/hanyuan/p/What_day_is_today.html
Copyright © 2011-2022 走看看