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

2023-05-16

  定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个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));



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断是否为闰年,并且计算生日是第几天 的相关文章

随机推荐