C语言小练习【计算某日是该年的第几天】

        学过C语言的基本知识,也就是前面几篇博客后,做一个小练习,用C语言编写的程序,要求:       

        该程序可以根据用户输入的年、月、日,计算一年中的第几天。通过详细解释程序中涉及的知识点,包括闰年的判断和一年中每个月的天数,能够理解并运用这些概念来解决类似的问题。同时,本文也将提供完整的代码和详细的步骤,帮助你学习和运行这个有趣的C语言程序。

        C语言作为一种广泛应用于系统编程和嵌入式开发的高级编程语言,拥有丰富的库函数和强大的功能,非常适合处理日期和时间相关的计算。本文将详细介绍一个简单的C语言程序,通过输入年、月、日,计算出这一天是该年的第几天。这个程序主要涉及两个重要的知识点:

        闰年的判断一年中每个月的天数

        接下来,我们将深入探讨这些知识点,帮助你理解并应用到实际的编程中:

一、闰年的判断

        闰年是指能够被4整除但不能被100整除的年份,或者能够被400整除的年份。在程序中,我们通过编写 pd 函数来判断一个给定的年份是否为闰年,以下是示例代码:

int pd(int y) {
    if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
        return 1; // 闰年
    else
        return 0; // 非闰年
}

        该函数获取一个年份 “y” 作为输入,使用条件判断语句来检查是否符合闰年的定义。如果年份满足闰年的条件,函数返回1,表示是闰年;否则返回0,表示不是闰年。

        在实际的编程中,闰年的判断是非常常见的需求。通过掌握这个知识点,可以轻松编写出其他与闰年相关的程序,比如判断一个给定年份范围内有多少个闰年等。

二、一年中每个月的天数

        在计算该年中的第几天时,我们需要知道每个月份的天数。因为闰年和非闰年的每个月份的天数是不同的,所以我们需要根据年份的情况来确定具体的天数。在程序中,我们使用了两个数组 “a”“b” 来分别存储非闰年和闰年中每个月的天数。以下是程序代码:

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};

        数组 a 存储了非闰年中每个月的天数,而数组 b 存储了闰年中每个月的天数。这两个数组的索引从0开始,分别对应一年中的1月到12月。

        根据用户输入的年、月、日,程序会根据年份判断是闰年还是非闰年,然后根据月份从相应的数组中取出对应的天数。

        掌握一年中每个月的天数,对于处理与日期相关的计算和逻辑是至关重要的。你可以利用这个知识点编写出类似的程序,如计算两个日期之间的天数差等。

三、程序实现

        了解和掌握了基础的知识储备,接下来我们就可以开始编写完整的代码了,思路首先是建立两个函数来分别判断是否为闰年和计算中天数,这样我们在主函数中只需要调用即可,这也是C语言面向对象编程的思路,任何时候C是基础,C++写程序是很常见的,当然单片机那种简单的除外;那么接下来让我们看看完整的的代码吧:

#include <stdio.h>  // 包含必要的头文件

// 检查是否为闰年的函数
int pd(int y) {
    if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
        return 1; // 闰年
    else
        return 0; // 非闰年
}

// 计算该年中的第几天的函数
int pdnf(int year, int m, int d) {
    int sum = 0;
    int 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 (pd(year) == 1) {
        for (i = 0; i < m - 1; i++)
            sum += b[i];
    } else {
        for (i = 0; i < m - 1; i++)
            sum += a[i];
    }
    sum += d;
    return sum;
}

int main(void) {
    int a, b, c;
    int z;

    printf("请输入年月日:\n");
    scanf("%d %d %d", &a, &b, &c);
    z = pdnf(a, b, c);
    printf("今天是%d年的第%d天:\n", a, z);

    return 0;
}

        程序包含了 “pd”“pdnf” 两个函数,分别用于判断闰年和计算一年中的第几天。在“main 函数” 中,程序通过 “scanf 函数”获取用户输入的年、月、日,并调用 “pdnf 函数”计算出结果,最后使用 “printf”函数将结果输出到屏幕上。

        该程序可以根据用户输入的年、月、日计算出一年中的第几天。通过本文探讨了闰年的判断和一年中每个月的天数这两个重要的知识点,并给出了相应的代码和解释。这些知识点对于处理日期和时间相关的计算具有广泛的应用,你可以通过掌握这些概念,更好地理解和应用到实际的编程中。

        今天的分享就到这里啦~

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祐言QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值