本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天。

输入样例1:

2009/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62

>_code

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int is_leap_year(int);
int main(int argc, char const *argv[])
{
    char str[11] = "";
    fgets(str,11,stdin);
    char y[5],m[3],d[3];
    int yy,mm,dd,date,feb = 28;
    char *p = str;
    strncpy(y,p,4);
    strncpy(m,p+5,2);
    strncpy(d,p+8,2);
    yy = atoi(y);
    mm = atoi(m);
    dd = atoi(d);
    if(is_leap_year(yy))feb = 29;
    switch (mm)
    {
    case 1:
        date = dd;
        break;
    case 2:
        date = 31 + dd;
        break;
    case 3:
        date = feb + 31 + dd;
        break;
    case 4:
        date = feb + 62 + dd;
        break;
    case 5:
        date = feb + 92 + dd;
        break;
    case 6:
        date = feb + 123 + dd;
        break;
    case 7:
        date = feb + 153 + dd;
        break;  
    case 8:
        date = feb + 184 + dd;
        break;
    case 9:
        date = feb + 215 + dd;
        break;
    case 10:
        date = feb + 245 + dd;
        break;
    case 11:
        date = feb + 276 + dd;
        break;
    case 12:
        date = feb + 306 + dd;
        break;  
    }
    printf("%d\n",date);
    return 0;
}
int is_leap_year(int y)
{
    return (y%4==0 && y%100!=0)||(y%400==0)?1:0;
}

atoi函数

功能:将字符串转换成整型
头文件: 
    #include <stdlib.h>
原型:
           int atoi(const char *nptr);
           long atol(const char *nptr);
           long long atoll(const char *nptr);
参数:
    字符串,且字符串中只有数字字符;遇到其他字符转换后都是整数0
返回值:
    整型变量
Last modification:2021 年 04 月 01 日 19 : 13 : 23