实例五:给定日期(年月日)——判断是这年的第几天

实例五:判断是每年的第几天

问题描述:
通过键盘输入某年某月某日,判断这一天是这一年的第几天?

#include<stdio.h>
int main(void)
{
    int year,month,day,leap,sum;
    printf("Input year month day:\n");
    scanf("%d %d %d",&year,&month,&day);
    if(year%400==0||(year%4==0&&year%100!=0))               //判断年份是不是闰年 变量leap代表多的天数
        leap = 1;
    else
        leap = 0;
    switch(month)
    {
        case 1:sum = 0;break;                                //对本月前的所有月的天数做累加,一定要break
    case 2:sum = 31;break;
    case 3:sum = 59;break;
    case 4:sum = 90;break;
    case 5:sum = 120;break;
    case 6:sum = 151;break;
    case 7:sum = 181;break;
    case 8:sum = 212;break;
    case 9:sum = 243;break;
    case 10:sum = 273;break;
    case 11:sum = 304;break;
    case 12:sum = 334;break;
    default:printf("Month error:\n");break;
    }
    sum += day;
    if(month>2)
        sum+=leap;
    printf("It is the %dth day.\n",sum);
    return 0;
}

运行结果:
在这里插入图片描述

心得:

计算要考虑特殊的年份——闰年
解决方法就是多一个变量:(闰年 & 排在二月以后)多一天,非闰年不多;对年和月做判断;

输入、输出、有穷、确定、健壮一个不能少

使用数组更简单一些。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值