C语言刷题随记 —— 判断哪一天_#include

\

文章目录

  • 题目
  • 1. 题目描述
  • 2. 程序分析
  • 思路
  • 题解

题目

1. 题目描述

输入某年某月某日,判断这一天是这一年的第几天?

C语言刷题随记 —— 判断哪一天_程序分析_02

2. 程序分析

以 3 月 5 日为例,应该先把前两个月的加起来,然后再加上 5 天即本年的第几天,特殊情况,闰年且输入月份大于 3 时需考虑多加一天。

思路

可以使用三个变量存储年、月、日,然后用 scanf函数 输入几个变量,然后使用 switch语句 对 month 进行判断累计天数,用 if语句判断是闰年还是平年,最后根据年份减去天数即可。

题解

#include <stdio.h>

int main()
{
    int day,month,year,sum,leap;

    printf("\nplease input year,month,day\n");

    scanf("%d,%d,%d",&year,&month,&day);

    switch(month)   //先计算某月以前月份的总天数
    {
        case 1:sum=0;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("data error");break;
    }

    sum=sum+day;    //再加上某天的天数

    if(year%400==0||(year%4==0&&year%100!=0))   //判断是不是闰年
        leap=1;
    else
        leap=0;
    if(leap==1&&month>2)    //如果是闰年且月份大于 2,总天数应该加一天
        sum++;

    printf("It is the %dth day.",sum);

    return 0;
}

C语言刷题随记 —— 判断哪一天_后端_03