题解 | 打印日期

#include <stdio.h>
#include <stdlib.h>
typedef struct month{
    int days;
    int monthnumber;
}month;
int isRun(int year);
month*ConstructYear(int year);
char *getDateString(int year,int day);
int main(){
    int y,n;
    while(scanf("%d %d",&y,&n)!=EOF){
         printf("%s\n",getDateString(y,n));
    }
}
int isRun(int year){
    int result;
    if(year%100==0){
         if(year%400==0){
            result=1;
         }
         else{
            result=0;
         }
    }
    else{
        if(year%4==0){
           result=1;
         }
        else{
            result=0;
        }
    }
    return result;
}
month*ConstructYear(int year){
    month*y=(month*)malloc(sizeof(month)*12);
    y[0].days=31;
    if(isRun(year)){
        y[1].days=29;
    }
    else{
        y[1].days=28;
    }
    y[2].days=31;
    y[3].days=30;
    y[4].days=31;
    y[5].days=30;
    y[6].days=31;
    y[7].days=31;
    y[8].days=30;
    y[9].days=31;
    y[10].days=30;
    y[11].days=31;
    return y;
}
char *getDateString(int year,int day){
    month*y=ConstructYear(year);
    int sum=0,i=0;
    for(;i<12;i++){
        sum=sum+y[i].days;
        if(sum>=day){
            break;
        }
    }
    sum=sum-y[i].days;
    int date=day-sum;
    char*str=(char*)malloc(sizeof(char)*12);
    str[0]=year/1000+'0';
    str[1]=(year%1000)/100+'0';
    str[2]=(year%100)/10+'0';
    str[3]=(year%10)+'0';
    str[4]='-';
    str[5]=(i+1)/10+'0';
    str[6]=(i+1)%10+'0';
    str[7]='-';
    str[8]=date/10+'0';
    str[9]=date%10+'0';
    str[10]='\0';
    return str;
}

全部评论

相关推荐

哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务