本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“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
返回值:
整型变量
本文链接:https://shengto.top/c/pat_61.html
转载时须注明出处及本声明