Gods_巨蚁

我通过代码实现了一款软件,同时也通过优雅的代码向其中注入灵魂 QQ:517377100 E-mail:ljsunlin@126.com 网站作品小蚂蚁工具箱anttoolbox.cn

导航

计算输入的日期为星期几【原创小程序】

计算输入的日期为星期几【原创小程序】
2007/08/25 22:56
/*
程序功能:计算输入的日期为星期几
作者:HungryAnt
日期:2007.08.25 晚
*/


/*查询 1970年1月1日 是星期几
查询方式
#include<time.h>
#include<stdio.h>
int main(){
    struct tm t;
    time_t h_t=0;

    printf(ctime(&h_t));
    getch();
}
得到结果 星期4
*/

#include<stdio.h>

int RunNian(int y){
    if((y%100!=0 && y%4==0) || y%400==0)
        return 1;
    else return 0;
}

int main(){
    int iy,im,id;
    int y,m,d,dsum=0,rn,day;
    char *dd;

    printf("请输入日期/n年 月 日/(请以空格键间隔!!!/):/n");
    scanf("%d%d%d",&iy,&im,&id);

    if(iy>1970 || (iy==1970 && (im>1 || (im==1 && id>1)))){/*1970年1月1日 之后*/
        for(y=1970;y<iy;y++){
            rn=RunNian(y);
            dsum+=365+rn;
        }
        for(m=1;m<im;m++){
            switch(m){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:dsum+=31;break;
            case 2:dsum+=28+rn;break;
            case 4:
            case 6:
            case 9:
            case 11:dsum+=30;break;
            }
        }
        dsum+=id-1;
        day=(4+dsum)%7;/*1970年1月1日 星期4*/
    }
    else if(iy==1970 && im==1 &&id==1)day=4;/*1970年1月1日*/
    else{/*1970年1月1日 之前*/
        for(y=iy+1;y<1970;y++){
            rn=RunNian(y);
            dsum+=365+rn;
        }
        for(m=im;m<=12;m++){
            switch(m){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:dsum+=31;break;
            case 2:dsum+=28+rn;break;
            case 4:
            case 6:
            case 9:
            case 11:dsum+=30;break;
            }
        }
        dsum-=id-1;
        day=4-(dsum)%7;
        if(day<0)day+=7;
    }
   
    switch(day){
    case 0:dd="日";break;
    case 1:dd="一";break;
    case 2:dd="二";break;
    case 3:dd="三";break;
    case 4:dd="四";break;
    case 5:dd="五";break;
    case 6:dd="六";break;
    }
   
    printf("%d年/%d月/%d日 是 星期%s",iy,im,id,dd);               
    getch();
}
 

posted on 2008-03-26 23:49  Gods_巨蚁  阅读(477)  评论(0编辑  收藏  举报

anttoolbox.cn