题目:给定 三个整数 代表年月日,求出今天是今年的第几个周几。年份从1900开始,已知1900 1月 1 日为周一。

输出格式:两个整数 a b 其中b取值1-7代表周几。

算法:

1、周几

weekday = ((days-1)%7+1)%7;

先计算出今年是从1900 1 1开始的第几天days,然后days-1是今天距离1900 1 1的距离,比如1900 1 2, days==2;然后(days-1)%7是除去了很多个星期后距离周一(1900 1 1为周一)的距离,(days-1)%7+1,后面这个1是周一的意思;然后再%7,这是通解。其实这一题没有必要多次一举,因为已知1900 1 1为周一,(days-1)%7+1得到的结果就是1-7。再%7在给定日期与周几的情况下算的,比如2022 6 25 是周六 那么 weekday = ((days-1)%7+6)%7;不%7的话结果不正确的。

2、第几个周几

th = 1+(days-1)/7;

        注意这个days与上文的days不相同,这个是从今年1月1日开始的第几天。同样的days-1是距离1月1日的距离,显然从第一周开始,距离小于7就还在第一周,距离大于等于7就进入下一周。比如1月1日周3,1月8日就是第二个周三。如果1月 1 日是周一,1月8日就是第二个周一。可以发现第几个周与1月1日是周几没有关系。

代码:

#include<stdio.h>
void getDays(int y,int m,int d){int days=0;int x=28;int i=0;if(y%4==0&&y%100!=0||y%400==0)x=29;switch(m){case 12:days+=30;case 11:days+=31;case 10:days+=30;case 9:days+=31;case 8:days+=31;case 7:days+=30;case 6:days+=31;case 5:days+=30;case 4:days+=31;case 3:days+=x;case 2:days+=31;}days=d+days;//  days是今天是今年的第几天int th = 1+(days-1)/7;  //days-1是与第一天的距离,计算得到第几个星期for(i=1900;i<y;i++){   //计算从1900 1 1开始的日期数if(i%4==0&&i%100!=0||i%400==0)days+=366;elsedays+=365;}//现在的days与上面的不是同一个含义int weekday = (days-1)%7+1; // days-1是距离,第二个1是周1,周一加上取余后的距离得到周几printf("%d %d\n",th,weekday);
}
int main(){int n,y,m,d;scanf("%d",&n);while(n--){scanf("%d%d%d",&y,&m,&d);getDays(y,m,d);}
}

PS:这是做题记录,主要供自己复习,仅供参考,时间紧迫,可能有漏误,请谅解

C语言计算今天是今年的第几个周几相关推荐

  1. C语言计算今天是一年的第几周

    /*!@brief 计算今天是一年的第几周@param [in] nYear 年@param [in] nMonth 月@param [in] nDate 日@param [in] nWeek 星期几 ...

  2. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  3. R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离

    R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...

  4. R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度、对字符串向量计算Jaccard相似度、将Jaccard相似度转化为Jaccard距离

    R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度.对字符串向量计算Jaccard相似度.将Jaccard相似度转化为Jaccard距离 目录 R ...

  5. R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差、使用plotrix包的std.error函数计算平均值的标准误差

    R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差.使用plotrix包的std.error函数计算平均值的标准误差 目录

  6. R语言计算回归模型每个样本(观察、observation、sample)的DFFITS度量实战:忽略单个观察(样本)时,回归模型所做的预测会发生多大的变化

    R语言计算回归模型每个样本(观察.observation.sample)的DFFITS度量实战:忽略单个观察(样本)时,回归模型所做的预测会发生多大的变化 目录

  7. R语言计算回归模型每个样本(观察、observation、sample)的杠杆值(leverage)实战:如果一个样本的预测变量比其他样本的预测变量值更极端,那么被认为具有很高的杠杆作用

    R语言计算回归模型每个样本(观察.observation.sample)的杠杆值(leverage)实战:如果一个样本的预测变量比其他样本的预测变量值更极端,那么被认为具有很高的杠杆作用 目录

  8. R语言计算每个分组的行数并将结果添加到dataframe中实战

    R语言计算每个分组的行数并将结果添加到dataframe中实战 目录 R语言计算每个分组的行数并将结果添加到dataframe中实战 #仿真数据

  9. R语言计算F1评估指标实战:F1 score、使用R中caret包中的confusionMatrix()函数为给定的logistic回归模型计算F1得分(和其他指标)

    R语言计算F1评估指标实战:F1 score.使用R中caret包中的confusionMatrix()函数为给定的logistic回归模型计算F1得分(和其他指标) 目录

最新文章

  1. Java程序员年薪40W,他1年走了别人5年的路(技术提炼)
  2. 再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望
  3. 类的成员函数指针和mem_fun适配器的用法
  4. 【报错笔记】在eclipse中复制代码后代码中会报画红线错,而且项目也会报错。
  5. asp文件上传和下载
  6. python画有权重网络图_使用Python的networkx绘制精美网络图教程
  7. php中的数据库操作和字符串操作session与cookie操作,PHP的cookie与session原理及用法详解...
  8. excel_applications
  9. 青少儿编程Python入门教程——Python基础知识库
  10. 是妄言还是实话 云电脑将代替传统PC?
  11. [idea遇到的坑] - Cannot load settings from file[xxxx/xxxx]
  12. Codeforces 954D. Fight Against Traffic
  13. 今日错题(10.6)
  14. 用物理学分析马歇尔的价格均衡论
  15. iis 网站添加 身份验证_在10分钟内将身份验证添加到任何网页
  16. 区块链溯源相比传统追溯有什么优点?
  17. 聊聊线性代数(15)SVD的应用--3
  18. r语言显示找不到read_html,R语言中read.table函数不常见的用法-文本中有#注释符号...
  19. c语言无符号整型除法,用位运算的方法实现无符号整数的除法,游戏编程 | 李大仁博客...
  20. Python中的错误和异常

热门文章

  1. 电子面单批量打印接口demo
  2. 自定义Dialog提示框高仿QQ浏览器版本更新提示框
  3. outlook qr码在哪里_QR扫描仪-QR扫描仪App下载-
  4. 微信严打虚拟货币和数字藏品 数藏二级交易市场乱象丛生 严防金融炒作行为
  5. 开源热门Python数据分析库:Pandas下载和安装以及用途
  6. 概率矩阵分解(Probabilistic Matrix Factorization)
  7. 2021年2G网络全部退网、3G延期退网!中国联通已正式表态
  8. Barrett Hand仿真(melodic)
  9. ROHM | 反向恢复时间trr的影响
  10. docker logs查看