在begin和end间填上正确的代码使程序能够准确运行
时间: 2024-02-19 19:58:13 浏览: 67
检查pascal程序代码begin和end,if和then和else匹配程序
4星 · 用户满意度95%
好的,以下是完整的代码,包括填空部分:
```c++
// 包含两种I/O库,可以使用任一种输入输出方式
#include <stdio.h>
#include <iostream>
using namespace std;
// 函数printMonth:按要求的格式打印某年某月的日历
// 参数:year-年,month-月
// 返回值:无
void printMonth(int year, int month){
// 本月1号是星期几
int week = whatDay(year, month);
// 本月有多少天
int days;
if(month == 2){
if(leapYear(year))
days = 29;
else
days = 28;
}
else if(month == 4 || month == 6 || month == 9 || month == 11)
days = 30;
else
days = 31;
// 输出表头
printf("%d年%d月\n", year, month);
printf("日 一 二 三 四 五 六\n");
// 输出日期
for(int i = 1; i <= days; i++){
if(i == 1){
for(int j = 1; j < week; j++)
printf(" ");
}
printf("%2d ", i);
if((i + week - 1) % 7 == 0 || i == days)
printf("\n");
}
}
// leapYear:判断闰年
// 参数:y-年
// 返回值:1-是闰年,0-不是闰年
int leapYear(int y){
if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
return 1;
return 0;
}
// 函数whatDay:计算某年某月的1号是星期几
// 参数:year-年,month-月
// 返回值:1到7--星期1到星期日
int whatDay(int year, int month){
// 1年月日是星期一
int w = 1;
int i;
// 1到year-1都是全年
for(i = 1; i < year; i++){
if(leapYear(i))
w += 366;
else
w += 365;
}
switch(month){
case 12: // 加月的
w += 30;
case 11: // 加月的
w += 31;
case 10: // 加月的
w += 30;
case 9: // 加月的
w += 31;
case 8: // 加月的
w += 31;
case 7: // 加月的
w += 30;
case 6: // 加月的
w += 31;
case 5: // 加月的
w += 30;
case 4: // 加月的
w += 31;
case 3: // 加月的
if(leapYear(year))
w += 29;
else
w += 28;
case 2: // 加月的天
w += 31;
case 1: // 1月不加了
;
}
// 得到-6,其中为星期天
w = w % 7;
// 调整星期天
if(w == 0)
w = 7;
return w;
}
/*************** Begin **************/
// 在此处填写代码,实现函数printMonth
/*************** End ****************/
int main(){
// 年、月
int y, m;
// 输入年月
cin >> y >> m;
// 输出该年月的日历
printMonth(y,m);
return 0;
}
```
在 `Begin` 和 `End` 之间填写的代码是 `printMonth` 函数的实现。这个函数的作用是输出某年某月的日历。具体实现方式是:
- 调用 `whatDay` 函数计算本月1号是星期几;
- 根据月份判断本月有多少天;
- 输出表头和星期几;
- 循环输出日期,每7天换行。
其中,每个日期要按照两位数输出,不足两位的前面要补空格。`printf("%2d ", i)` 就是输出两位数字的格式。
阅读全文