🥝🥝🥝 跑步锻炼跑步锻炼
这是一道蓝桥杯省赛题目,虽然不难,却可以从中收获蛮多知识和技巧的。
题目介绍:
🥥知识点①:
怎么样求解两个时间之间的天数等
题目:求解2000 01 01 星期6 至 10 01 星期4。
#include <iostream>using namespace std;int ds[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};int main() {int y=2000,m=1,d=1,w=6;int ans=0,res=0;while(true) {if(y==&&m==10&&d==1) break;d=d+1;ans++;//天数统计bool leap=y%100!=0&&y%4==0||y%400==0;if(leap&&m==2) {if(d>ds[m]+1) {d=1;m=m+1;}} else if(d>ds[m]) {d=1;m=m+1;}if(m==13) {m=1;y=y+1;}}cout<<ans<<endl;//天数return 0;}
🥥知识点②:
怎么样求解两个时间之间跨域多少个星期
题目:求解2000 01 01 星期6 至 10 01 星期4。
#include <iostream>using namespace std;int ds[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};int main() {int y=2000,m=1,d=1,w=6;int ans=0,res=0;while(true) {if(y==2000&&m==1&&d==10) break;d=d+1;w=(w+1)%7;if(w==1) res++;//星期数统计bool leap=y%100!=0&&y%4==0||y%400==0;if(leap&&m==2) {if(d>ds[m]+1) {d=1;m=m+1;}} else if(d>ds[m]) {d=1;m=m+1;}if(m==13) {m=1;y=y+1;}}cout<<res+1<<endl;//星期数(跨越的星期数)return 0;}
🥥知识点③:
怎么样怎么样有效的确认自己写的代码没有偏差
技巧:可以将两个时间设计得比较小来判断调试。
🥝🥝🥝本题答案求解:
#include <bits/stdc++.h>using namespace std;int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int main() {int y = 2000, m = 1, d = 1, w = 6, ans = 0;//起点时间int res=0;while(true) {if(d==1||w==1) res=res+2;else res=res+1;if (y == && m == 10 && d == 1) {break;//结束时间}w = (w + 1) % 7;//计算星期数d = d + 1;//计算天数if((y % 400 == 0 || y % 4 == 0 && y % 100 != 0) && m == 2) {//年份判断if (d > month[m] + 1) {d = 1;m += 1;//月份加加}} else if (d > month[m]) {d = 1;m += 1;}if(m == 13) {//月份数超过12y += 1;m = 1;}}printf("%d\n", ans);cout<<res<<endl;return 0;}
完结撒花:小编
如果觉得《跑步锻炼跑步锻炼》对你有帮助,请点赞、收藏,并留下你的观点哦!