为什么输出了两遍??!!
如图,找了半天不知道问题在哪!
自己写的日历,下面是代码,求大佬帮忙看看啊啊啊!
最好复制走在你们的机子上运行下,看看是不是也是输出两遍!
#include "stdio.h"
#include "math.h"
int getweek(int Y, int m, int d) {
if (m < 3) {
Y -= 1;
m += 12;
}
int y = Y % 100;
int C = Y - y;
int W = (C / 4 - 2 * C + y + y / 4 + 26 * (m + 1) / 10 + d - 1) % 7;
if (W < 0)
W += 7;
return W;
} /* 计算某一天是周几
W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1
其中,W是所求日期的星期数.如果求得的数大于7,可以减去7的倍数,直到余数小于7为止.c是公元年份的前两位数字,y是已知公元年份的后两位数字;m是月数,d是日数.方括[
]表示只截取该数的整数部分。
还有一个特别要注意的地方:所求的月份如果是1月或2月,则应视为前一年的13月或14月.所以公式中m
的取值范围不是1-12,而是3-14. */
bool isleep(int Y) {
if (Y % 400 == 0 || (Y % 100 != 0 && Y % 4 == 0))
return true;
else
return false;
} // 判断是否为闰年
int getdays(int Y, int M) {
switch (M) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
if (isleep(Y))
return 29;
else
return 28;
default:
return 30;
}
} /* 判断指定月有多少天 */
void printfMonth(int Y, int M) {
int d = getdays(Y, M);
int w = getweek(Y, M, 1);
int s = w;
printf
("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
while (s--)
printf("\t");
for (int i = 1; i <= d; i++) {
printf("%d\t", i);
if ((i + w) % 7 == 0)
printf("\n");
}
printf("\n");
}
int main() {
int Y, M;
char s=NULL;
printf("请输入年月,以空格间隔,enter结束输入\n");
scanf("%d %d", &Y, &M);fflush(stdin);
while (1) {
printf("%d年%d月:\n", Y, M);
printfMonth(Y, M);
printf
("输入a上一年,输入b下一年,输入c上一月,输入d下一月,输入e指定年份和月份\n");
scanf("%c", &s);
switch (s) {
case 'a':
Y--;
break;
case 'b':
Y++;
break;
case 'c':
if (M == 1) {
M = 12;
Y--;
} else
M--;
break;
case 'd':
if (M == 12) {
M = 1;
Y++;
} else
M++;
break;
case 'e':
printf("请输入年份和月份:");
scanf("%d %d", &Y, &M);
break;
default:
printf("未知命令,请重新输入!\n");
}
}
}


...全文
相关推荐
解决nuxt页面中mounted、created、watch执行两遍的问题
解决 Nuxt 页面中 mounted、created、watch 执行两遍的问题在 Nuxt 项目中,我们经常会遇到 mounted、created 和 watch 等生命周期钩子函数执行两遍
xmpp重连 注册两遍
#### 三、问题根源从上述分析中可以看出,该实现逻辑中可能导致“注册两遍”的原因主要有以下几个方面:1.
Two-Pass-Linker:模拟两遍链接器,其目的是重新定位外部地址并解决外部差异
本文介绍如何实现一个两遍链接器,该链接器通过两遍扫描处理对象模块,第一遍确定模块基地址和外部符号地址,第二遍生成最终输出并处理地址引用。同时,链接器需进行错误检测并提供错误信息。
优化 AUC 两遍学习算法
优化 AUC 两遍学习算法
好的程序需要你至少好好写两遍
好的程序需要你至少好好写两遍!最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在80和90年代发展形成。但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开


