C语言计算今天是今年的第几个周几
题目:给定 三个整数 代表年月日,求出今天是今年的第几个周几。年份从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语言计算今天是今年的第几个周几相关推荐
- C语言计算今天是一年的第几周
/*!@brief 计算今天是一年的第几周@param [in] nYear 年@param [in] nMonth 月@param [in] nDate 日@param [in] nWeek 星期几 ...
- 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)
前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...
- R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离
R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...
- R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度、对字符串向量计算Jaccard相似度、将Jaccard相似度转化为Jaccard距离
R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度.对字符串向量计算Jaccard相似度.将Jaccard相似度转化为Jaccard距离 目录 R ...
- R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差、使用plotrix包的std.error函数计算平均值的标准误差
R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差.使用plotrix包的std.error函数计算平均值的标准误差 目录
- R语言计算回归模型每个样本(观察、observation、sample)的DFFITS度量实战:忽略单个观察(样本)时,回归模型所做的预测会发生多大的变化
R语言计算回归模型每个样本(观察.observation.sample)的DFFITS度量实战:忽略单个观察(样本)时,回归模型所做的预测会发生多大的变化 目录
- R语言计算回归模型每个样本(观察、observation、sample)的杠杆值(leverage)实战:如果一个样本的预测变量比其他样本的预测变量值更极端,那么被认为具有很高的杠杆作用
R语言计算回归模型每个样本(观察.observation.sample)的杠杆值(leverage)实战:如果一个样本的预测变量比其他样本的预测变量值更极端,那么被认为具有很高的杠杆作用 目录
- R语言计算每个分组的行数并将结果添加到dataframe中实战
R语言计算每个分组的行数并将结果添加到dataframe中实战 目录 R语言计算每个分组的行数并将结果添加到dataframe中实战 #仿真数据
- R语言计算F1评估指标实战:F1 score、使用R中caret包中的confusionMatrix()函数为给定的logistic回归模型计算F1得分(和其他指标)
R语言计算F1评估指标实战:F1 score.使用R中caret包中的confusionMatrix()函数为给定的logistic回归模型计算F1得分(和其他指标) 目录
最新文章
- Java程序员年薪40W,他1年走了别人5年的路(技术提炼)
- 再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望
- 类的成员函数指针和mem_fun适配器的用法
- 【报错笔记】在eclipse中复制代码后代码中会报画红线错,而且项目也会报错。
- asp文件上传和下载
- python画有权重网络图_使用Python的networkx绘制精美网络图教程
- php中的数据库操作和字符串操作session与cookie操作,PHP的cookie与session原理及用法详解...
- excel_applications
- 青少儿编程Python入门教程——Python基础知识库
- 是妄言还是实话 云电脑将代替传统PC?
- [idea遇到的坑] - Cannot load settings from file[xxxx/xxxx]
- Codeforces 954D. Fight Against Traffic
- 今日错题(10.6)
- 用物理学分析马歇尔的价格均衡论
- iis 网站添加 身份验证_在10分钟内将身份验证添加到任何网页
- 区块链溯源相比传统追溯有什么优点?
- 聊聊线性代数(15)SVD的应用--3
- r语言显示找不到read_html,R语言中read.table函数不常见的用法-文本中有#注释符号...
- c语言无符号整型除法,用位运算的方法实现无符号整数的除法,游戏编程 | 李大仁博客...
- Python中的错误和异常