文章

34

粉丝

179

获赞

13

访问

199.0k

头像
浙江工商大学(2020上机题-算周几)
备考心情
发布于2022年2月27日 15:11
阅读数 5.8k

这题以前也算碰过,不过第二次做的话思路相对清楚了一些,花了也有很久的考试,考试的时候可能就很难写出来了。

思路汇总,这题给定了一个日期那就是1965.1.1是周五,总的就是要算出距离这一天过了多少天,然后%7,最后加上当天的周五就可以了。这块处理的话自己是加上5再%7,但是要注意周天%7是0,所以要特殊处理下。

一个比较麻烦地方就是距离很多年,中间会有闰年,非闰年交替,不太好处理,也应该就是这题的难点。

我采用的办法是预处理把所有的年份先判断是否为闰年,然后先把整年的算了,假如是到2000年8月30日,那我就吧到1999年之间的整年都算了,最后2000年再单独处理。对于这个单独出的年份我的方法如下,还是用到了之前的预处理,判断是否为闰年,把到7月的按整月处理,最后day单独加上去。

自己本题也是先单独写了1965年的,测试了下,再扩大到所以的年份。 

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};  //闰年
int c[10000]={0};
int lunnian(int year){  //判断是否为闰年
    if((year %4==0 && year%100!=0) || year%400==0)
        return 1;
    else
        return 0;
}
int main(){
    int year,month,day;
    for(int i=1965;i<=9999;i++){  //预处理,提前判断所有可能的年份是否为闰年
            if(lunnian(i)==1)
                c[i]=1;
        }
    while(scanf("%d %d %d",&year,&month,&day)!=EOF){
       ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发