1900年为星期一,任意一天求星期几。

#include<stdio.h>
int main()
{
    int year,month,day,sum1,sum2,sum3,sum,i,year1;
    printf("请输入今天的日期,格式1900-1-1。
");
    scanf("%d-%d-%d",&year,&month,&day);
    year1=year;       /*变量重复性使用,考虑是否为初始值,尽量不要让一个变量在连续的操作下使用。*/ 
    if(year<1900)
    {
        sum1=0;
        for(year=year+1;year<1900;year++)
        {
            if(year%4==0&&year%100!=0||year%400==0)
            {
                sum1=sum1+366;
            }
            else
            {
                sum1=sum1+365;
            }
        }
        sum2=0;
        for(i=1;i<month;i++)
        {
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            {
                sum2=sum2+31;
            }
            else if(i==4||i==6||i==5||i==9||i==11)
            {
                sum2=sum2+30;
            }
            else if(i==2)
            {
                if(year1%4==0&&year1%100!=0||year1%400==0)
                {
                    sum2=sum2+29;
                }
                else
                {
                    sum2=sum2+28;
                }
            }
        }
        sum2=sum2+day; 
        if(year1%4==0&&year1%100!=0||year1%400==0)
        {
            sum3=366-sum2+1;
        }
        else
        {
            sum3=365-sum2+1;
        }
        sum=sum1+sum3;
        
        switch(sum%7)
        {
            case 0:printf("您输入的日期为星期一。
");break;
            case 1:printf("您输入的日期为星期日。
");break;
            case 2:printf("您输入的日期为星期六。
");break;
            case 3:printf("您输入的日期为星期五。
");break;
            case 4:printf("您输入的日期为星期四。
");break;
            case 5:printf("您输入的日期为星期三。
");break;
            case 6:printf("您输入的日期为星期二。
");break;
        }
            printf("%d",sum);
        
    }
    else if(year==1900)
    {
        for(i=1;i<month;i++)
        {
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            {
                sum=sum+31;
            }
            else if(i==4||i==6||i==5||i==9||i==11)
            {
                sum=sum+30;
            }
            else if(i==2)
            {
                sum=sum+28;
            }
        }
        sum=sum+day;
        switch(sum%7)
        {
            case 0:printf("您输入的日期为星期日。
");break;
            case 1:printf("您输入的日期为星期一。
");break;
            case 2:printf("您输入的日期为星期二。
");break;
            case 3:printf("您输入的日期为星期三。
");break;
            case 4:printf("您输入的日期为星期四。
");break;
            case 5:printf("您输入的日期为星期五。
");break;
            case 6:printf("您输入的日期为星期六。
");break;
        }
        printf("%d",sum);
    }
    else 
    {
        sum=0;
        sum1=0;
        for(year=year-1;year>=1900;year--)
        {
            if(year%4==0&&year%100!=0||year%400==0)
            {
                sum1=sum1+366;
            }
            else
            {
                sum1=sum1+365;
            }
        }
        sum2=0;
        for(i=1;i<month;i++)
        {
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            {
                sum2=sum2+31;
            }
            else if(i==4||i==6||i==5||i==9||i==11)
            {
                sum2=sum2+30;
            }
            else if(i==2)
            {
                if(year1%4==0&&year1%100!=0||year1%400==0)
                {
                    sum2=sum2+29;
                }
                else
                {
                    sum2=sum2+28;
                }
            }
        }
        sum2=sum2+day; 
        sum=sum1+sum2;
        switch(sum%7)
        {
            case 0:printf("您输入的日期为星期日。
");break;
            case 1:printf("您输入的日期为星期一。
");break;
            case 2:printf("您输入的日期为星期二。
");break;
            case 3:printf("您输入的日期为星期三。
");break;
            case 4:printf("您输入的日期为星期四。
");break;
            case 5:printf("您输入的日期为星期五。
");break;
            case 6:printf("您输入的日期为星期六。
");break;
        }
        printf("%d",sum);
    }
    return 0;
}

实验总结:

变量重复性使用,考虑是否为初始值,尽量不要让一个变量在连续的操作下使用。
原文地址:https://www.cnblogs.com/TX980502/p/5987982.html