要求:编写程序,从键盘输入结束日期和星期几的序数(15),然后输出从2017-01-01至结束日期之间全部为星期几的日期5),分别代表星期一至星期五。例:
输入:1、结束日期,2017-01-01至2018-12-31为有效值
2、序数(1
2018-12-13
5
输出:每个日期占一行。例:
[2017-01-01~2018-12-31,5]
001 2017-01-06
002 2017-01-13
.
.
.
104 2018-12-28
【日期】找找哪些日期是星期几
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 技术专家团-小桥流水 2021-12-05 09:25关注
运行结果及代码如下:
代码:
#include <stdio.h> //判断闰年 int isrn(int year) { if (year%4==0 &&year%100 !=0 || year%400==0) return 1; else return 0; } //判断日期是否超出 int main() { int dd[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int year,mon,day,xs; int d=1; int i,j,k; int cnt=0; scanf("%d-%d-%d",&year,&mon,&day); scanf("%d",&xs); if(xs<1 || xs >7) { printf("ERROR!"); return 0; } i=2017; j=1; k=d+xs; if(i>year) { printf("NO DATE FOUND!"); return 0; } else if(i==year) { if(j>mon) { printf("NO DATE FOUND!"); return 0; } else if(j==mon) { if(k>day) { printf("NO DATE FOUND!"); return 0; } } } cnt++; printf("[2017-01-01~%d-%d-%d,%d\n",year,mon,day,xs); printf("%03d %d-%02d-%02d\n",cnt,i,j,k); //2017-01-06 while (1) { k+= 7; if(isrn(i)) dd[2]=29; else dd[2]=28; if(k > dd[j]) { k -= dd[j]; j++; } if(j>12) { i++; j=1; } if(i>year) break; else if(i==year) { if(j>mon) break; else if(j==mon) { if(k>day) break; } } cnt++; printf("%03d %d-%02d-%02d\n",cnt,i,j,k); //2017-01-06 } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog