#include<stdio.h> #include<cstring> #define N 12 //一行数据的最大长度 int whichDay(int year , int month ,int day ); //求该年该月该日的天数 int getLine(char s[],int lim);//读入一整行数据
int main(){ int flag1=0; char date[N]; int length=0; while(n=getLine(date,N)){ printf("%s",date); int year=0,month=0,day=0; for(int i=0;i<n;i++){ if(date[i]==‘/‘){ if(flag1==0){ flag1=1; }else if(flag1==1){ flag1=2; } } if(flag1==0){ year=(date[i]-‘0‘)+year*10; } if(flag1==1){ month=(date[i]-‘0‘)+month*10; } if(falg1==2){ day=date[i](date[i]-‘0‘)+day*10; } } int sum=whichDay(year,month,day); printf("%d\n",sum); } }
int whichDay(int year , int month ,int day ){ int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //判定是否是闰年 if((year%4==0&&year%100!=0)||(year%400==0)){ days[1]=29; } //计算天数 int sum=0; for(int i=0;i<month-1;i++){ sum+=days[i]; } sum+=day; return sum; } int getLine(char s[],int lim){ int i=0,c; //i为该行中的字符长度,c记录读到的字符 while(--lim>0 && (c=getchar()!=EOF) && c!=‘\n‘){ s[i++]=c; } if(c==‘\n‘){ s[i++]=c; } s[i]=‘\0‘; return i; }
*注:在该题中输入为 YYYY/MM/DD,一般可用scanf("%d/%d/%d",&year ,&month, &day);上述方法读入更有通用性。
时间: 2024-10-05 23:09:39