xdoj计算星期(C语言实现)

求解星期。已知2021年11月14日为星期天,输入之前的任意一个年份的时间,
求解是星期几。
说明:输入是三个整数,第一个表示年份,第二个表示月份,第三个表示
日期,比如2020年11月5日为2020 11 5,之间以空格隔开;输入是对应英文单词,
是星期4,为Thursday,首字母大写,其余小写。提示,星期一到星期天对应
英文是Monday, Tuesday, Wendnesday, Thursday,Friday, Saturday和Sunday。
输入示例1: 
2020 11 5
输出示例1:
Thursday

输入示例2: 
2021 6 2
输出示例2:
Wendnesday

分析:我是将2021年单独讨论,并且那一年11月也单独讨论,即先求出所求日期与题中给的20211114相差几天,然后对差值求模,但要注意,求模得到的值并不是对应的星期数而是7-该星期数。

以下是代码实现

#include <stdio.h> 
int main{//以为我会修改数据所以year-y,month-m等价 
	int year,month,day,y,m,d,total=14,i,mod;//mod存求模运算的值,如11月12日2%7==2是周五 
	int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//12个月 
	scanf("%d%d%d",&year,&month,&day);
	for(y=year,m=month;y<=2021;y++){
		if(y==2021){//单独考虑2021年 
			if(month==11){
					total=total-day;//因为我total初始14考虑了11月不全 
				}
			else{
				for(m=month;m<11;m++){
					total=total+a[m];
				}
				total=total-day;//减去多加的天数 
			}
		}
		else{
			for(m=10;m>0;m--){
				total=total+a[m];//2021.11.14前2021年的天数 
			}
			for(i=y+1;i<2021;i++){
				total=total+365;
				if((i%4==0&&i%100!=0)||i%400==0){
					total++;//闰年多一天 
				}
			}//我输入的年份的后一年
			//需要判断我输入的年份是不是闰年 
			if((year%4==0&&year%100!=0)||year%400==0){//闰 
				a[2]++; 
			}
			for(m=month;m<=12;m++){
				total=total+a[m];
			}
			total=total-day;			
		}
	} 
	mod=total/7;
	switch(mod){
		case 0:printf("Sunday"); break;
		case 1:printf("Saturday"); break;
		case 2:printf("Friday"); break;
		case 3:printf("Thursday"); break;
		case 4:printf("Wendnesday"); break;//题里面这个wendnesday拼错了 
		case 5:printf("Tuesday"); break;
		case 6:printf("Monday"); break;
		default:break;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值