首页 > 代码库 > Hdu_哪一天?

Hdu_哪一天?

#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” 博客,转载请与作者联系!

Hdu_哪一天?