c 循环 确定所输入年-月-日 为星期几

#include<stdio.h>
int main(void)
{
int a,b,c,f,i,m,n;
int sum=0;
int s=0;
int d[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int e[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入查询日期(年-月-日,如:2021-4-11):\n");
scanf("%d-%d-%d",&a,&b,&c);
printf("请输入%d年%d月%d日1月1日是星期几(1-7):\n",a,b,c);
for(i=1;i<a;i++)
{
    if(i%100==0 && i%400==0 || i%4==0){
    sum+=366;
    }
    else{
    sum+=365;
    }
}
f=sum%7;
printf("%d\n",f);
if(a%100==0 && a%400==0 || a%4==0){
    for(m=0;m<b-1;m++)
    {
    s+=d[m];
    }
    s+=c;
    n=f+s%7-1;   
}
else{
    for(m=0;m<b-1;m++){
    s+=e[m];
    }
    s+=c;  
    n=f+s%7-1;
}
 if(n==1){
        printf("%d年%d月%d日是星期一\n",a,b,c);}
 else if(n==2){
        printf("%d年%d月%d日是星期二\n",a,b,c);}
 else if(n==3){
        printf("%d年%d月%d日是星期三\n",a,b,c);}
 else if(n==4){
        printf("%d年%d月%d日是星期四\n",a,b,c);}
 else if(n==5){
        printf("%d年%d月%d日是星期五\n",a,b,c);}
 else if(n==6){
        printf("%d年%d月%d日是星期六\n",a,b,c);}
 else{printf("%d年%d月%d日是星期日\n",a,b,c);}
 return 0;
 }
 - 首先要明确公元0年不存在,公元1年第一天为星期一
 - 闰年与平年的区别:闰年366天,二月29天;平年365天,二月29天。
 - 先计算这一年一月一日距公元111日有多少天,用天数取余7,余数 即该年11日为周几
 - 知道了这一年11日为周几,再for循环(期间借用整型数组,因为每个月天数不定)计算出这一天距11日为多少天。
 - 用天数取余7,即得这一天为星期几

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值