C 언어에서 날짜를 입력하여 요일을 계산하는 함수
                                            
 19965 단어  C 언어
                    
#include<stdio.h>
#define CURRENT_YEAR 2015
#define CURRENT_MON  6
#define CURRENT_DAY  21
enum month{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};
int year;        //     
enum month mon;    //     
int day;        //    
int total_yday=0;    //      
int total_mday=0;    //       
int total_day =0;    //     
int plus_mday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//      
int i,j;
void greater_date()    //      
{
    total_yday=0;    //        
    total_mday=0;    //         
    total_day =0;    //       
    for(i=CURRENT_YEAR+1;i<year;i++)//      
    {
        if((i%4==0 && i%100!=0) || (i%400 == 0))
            total_yday=total_yday+366;
        else
            total_yday=total_yday+365;
    }
    if((CURRENT_YEAR%4==0 && CURRENT_YEAR%100!=0) || CURRENT_YEAR%400 ==0)//          
        plus_mday[2]=29;
    for(j=CURRENT_MON+1;j<13;j++)    //           
    {
        total_mday=total_mday+plus_mday[j];    
    }
    total_mday=total_mday+plus_mday[CURRENT_MON]-CURRENT_DAY;    //             total_mday,tot
    plus_mday[2]=28;    //        28
    if((year%4==0 && year%100!=0) || year%400==0)        //           
        plus_mday[2]=29;
    for(j=1;j<mon;j++)
    {
        total_mday=total_mday+plus_mday[j];
    }
    total_mday=total_mday+day;
    total_day=total_yday+total_mday;
    total_day=total_day%7;
}
void smaller_date()    //      
{
    total_yday=0;    //        
    total_mday=0;    //         
    total_day =0;    //       
    for(i=year+1;i<CURRENT_YEAR;i++)
    {
        if((i%4==0 && i%100!=0) || (i%400 == 0))
            total_yday=total_yday+366;
        else
            total_yday=total_yday+365;
    }
    if((year%4==0 && year%100!=0) || year%400==0)        //           
        plus_mday[2]=29;
    for(j=mon+1;j<13;j++)    //         
    {
        total_mday=total_mday+plus_mday[j];    
    }
    total_mday=total_mday+plus_mday[mon]-day;    //             total_mday,tot
    plus_mday[2]=28;    //        28
    if((CURRENT_YEAR%4==0 && CURRENT_YEAR%100!=0) || CURRENT_YEAR%400 ==0)    //          
        plus_mday[2]=29;
    for(j=1;j<CURRENT_MON;j++)    //              
    {
        total_mday=total_mday+plus_mday[j];
    }
    total_mday=total_mday+CURRENT_DAY;
    total_day=total_yday+total_mday;
    total_day = (7-total_day%7)%7;
}
void equal_date()    //         
{
    total_yday=0;    //        
    total_mday=0;    //         
    total_day =0;    //       
    if(mon<CURRENT_MON)//        
    {
        for(i=mon+1;i<CURRENT_MON;i++)
        {
            total_mday=total_mday+plus_mday[i];
        }
        total_mday=total_mday+plus_mday[mon]-day+CURRENT_DAY;
        total_day=total_mday;
        total_day=(7-total_day%7)%7;
    }
    if(mon>CURRENT_MON)    //        
    {
        for(i=CURRENT_MON+1;i<mon;i++)
        {
            total_mday=total_mday+plus_mday[i];
        }
        total_mday=total_mday+plus_mday[CURRENT_MON]-CURRENT_DAY+day;
        total_day=total_mday;
        total_day=total_day%7;
    }
    if(mon==CURRENT_MON)
    {
        if(day>=CURRENT_DAY)
        {
            total_day=day-CURRENT_DAY;
            total_day%=7;
        }
        if(day<CURRENT_DAY)
        {
            total_day=CURRENT_DAY-day;
            total_day=(7-total_day%7);
        }
    }
}
void get_date()    //    
{
    year=0;
    day=0;
    mon=0;
    printf("Input year:");
    scanf("%d",&year);
    int i,j;
    getchar();
    while(1)    //get month
    {
        printf("Input month:");
        scanf("%d",(int*)&mon);
        getchar();
        if(mon>0&&mon<=12)
            break;
    }
    while(1)    //get day
    {
        printf("Input day:");
        scanf("%d",&day);
        getchar();
        if(day>0&&day<=31)
            break;
    }
}
void output_weekday()
{
        switch(total_day)
        {
            case 1:
                printf("%d %d %d     
",year,mon,day);
                break;
            case 2:
                printf("%d %d %d     
",year,mon,day);
                break;
            case 3:
                printf("%d %d %d     
",year,mon,day);
                break;
            case 4:
                printf("%d %d %d     
",year,mon,day);
                break;
            case 5:
                printf("%d %d %d     
",year,mon,day);
                break;
            case 6:
                printf("%d %d %d     
",year,mon,day);
                break;
            case 0:
                printf("%d %d %d     
",year,mon,day);
                break;
            default:
                break;
        }
}
int main()
{
    while(1)
    {
            get_date();
        if(year>CURRENT_YEAR)
            greater_date();
        if(year<CURRENT_YEAR)
            smaller_date();
        if(year==CURRENT_YEAR)
            equal_date();
        output_weekday();
    }
}이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.