计算天数的代码,从键盘输入年、月、日,在屏幕输出此日期是改年的第几天

1 题目

功能:计算某日是该年的第几天
描述:计算天数的代码,从键盘输入年、月、日,在屏幕输出此日期是改年的第几天

2 思路

判断年份是闰年还是平年,两点:要么可以直接被 400 整除,要么能被 4 整除,但是不能被 100 整除

if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
    return 1;                               
else
    return 0;   

判断该天是改年的第几天,那么需要知道每个月有多少天。另外,2 月份需要第一判断是平年还是闰年,再来进行后续的计算

3 代码

#include <stdio.h> 
#include <stdlib.h>

/**
功能:计算某日是该年的第几天
描述:计算天数的代码,从键盘输入年、月、日,在屏幕输出此日期是改年的第几天
**/

int leap(int a) {                                       // 判断是否为闰年
    if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)     // 闰年判定条件
        return 1;                                       // 是闰年返回1
    else
        return 0;                                       // 不是闰年返回0
}

int number(int year, int m, int d) {                    // 参数 年 月 日,计算是该年的第几天

    int sum = 0, i;
    // 平年每月的天数
    int a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    // 闰年每月的天数
    int b[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    if (leap(year) == 1)                                // 判断是否为闰年
        for (i = 0; i < m - 1; i++)
            sum += b[i];                                // 是闰年,累加数组b前m-1个月份天数
    else
        for (i = 0; i < m - 1; i++)
            sum += a[i];                                // 不是闰年,累加数组a钱m-1个月份天数
    sum += d;                                                       // 将前面累加的结果加上日期,求出总天数
    return sum;                                                 // 将计算的天数返回
}

int main(int argc, char const *argv[]) { 
    int year, month, day, n;                                        // 定义变量为基本整型
    printf("请输入年月日
");
    scanf("%d%d%d", &year, &month, &day);               // 输入年月日
    n = number(year, month, day);                               // 调用函数number
    printf("%d.%d.%d 是 %d 年的第 %d 天
", year, month, day, year, n);
}

示例结果:

$ gcc ex054.c -o demo
$ ./demo
请输入年月日
2020 12 31
2020.12.31 是 2020 年的第 366 天

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
谢泓业的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容