判断是否为闰年,并且计算生日是第几天

来源:互联网 发布:金方圆数控冲床编程 编辑:程序博客网 时间:2024/05/16 15:32

  定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。

typedef struct days {

   int year;

   int month;

   int day;

}Days;


//计算该日在当年是第几天,实现函数

第一种方法

int days(Days a);


int days(date dat)

{
    int a[12] = {0,31,59,90,120,151,181,212,243,273,304,334};
    int day = 0;
    BOOL isTrue ; // 用于判断该年是否为闰年
    // 判断该年是否为闰年
    if (dat.year % 400 == 0 || (dat.year % 4 == 0 && dat.year % 100 != 0)) {
        isTrue = 1;  // 如果该年是闰年,令isTrue 为 1
    } else {
        isTrue = 0;
    }
    day += a[dat.month - 1] + dat.day;

    day += isTrue && dat.month >= 3 ? 1 : 0;

第二种方法

int days(Days a) {//这里的Days表示的是形参的数据类型为Days,从而在main.m中必须定义和Days相同的数据类型

   int sum = 0;

   int i = a.month;

   if (a.year %400 == 0 || (a.year %4 == 0 && a.year %100 != 0)) {

       switch (i - 1) {

           case 12:

               printf("输入错误");

           case 11:

                sum +=30;

           case 10:

                sum +=31;

           case 9:

                sum +=30;

           case 8:

                sum +=31;

           case 7:

                sum +=31;

           case 6:

                sum +=30;

           case 5:

                sum +=31;

           case 4:

                sum +=30;

           case 3:

                sum +=31;

           case 2:

                sum +=29;

           case 1:

                sum +=31 ;

               break;

           default:

               printf("输入错误");

               break;

        }

        sum += a.day;

    }else {

       switch (i - 1) {

           case 12:

               printf("输入错误");

           case 11:

                sum +=30;

           case 10:

                sum +=31;

           case 9:

                sum +=30;

           case 8:

                sum +=31;

           case 7:

                sum +=31;

           case 6:

                sum +=30;

           case 5:

                sum +=31;

           case 4:

                sum +=30;

           case 3:

                sum +=31;

           case 2:

                sum +=28;

           case 1:

                sum +=31 ;

               break;

           default:

               printf("输入错误");

               break;

        }

        sum += a.day;

    }

调用函数

  Days calcuDay = {2001,10, 28};

   printf("%d",days(calcuDay));




0 0
原创粉丝点击