#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);上述方法读入更有通用性。
本文出自 “11703160” 博客,转载请与作者联系!
原文地址:http://11713160.blog.51cto.com/11703160/1893040