第 1 题 (20.0 分) 题号:38 难度:中 第 1 章
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
题目:用一个 8 位正整数表示日期,其中前 4 位表示年,中间 2 位表示月,最后 2 位表示日。
例如:20170901 表示 2017 年 9 月 1 日
20200510 表示 2020 年 5 月 10 日
程序计算两个日期之间的天数。
程序运行结果为:
20170901-20200510 共有 983 天
------------------------------------------------------------------------
注意:请勿改动程序中的其他内容。
----------------------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
int valid_date(int date)
{
int year,month,day;
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
year=date/10000;
month=date/100%100;
day=date%100;
if(month>12)
return 2;
mon[1]+=(year%4==0 && year%100!=0 || year%400==0);
return day>mon[month-1];
}
int main()
{
int first=20170901,last=20200510,date;
int year,month,day,val,days;
/**********Program**********
for(days=0,date=first;date<=last; )
{
year=date/10000;
month=date/100%100;
day=date%100;//取数位