将第一个程序写入第二个程序的void printMonthCalendar中,使之成为第二个程序的一个功能
#include <stdio.h>
// 函数声明
int isLeapYear(int year);
int getMonthDays(int year, int month);
void printMonthCalendar(int year, int month);
int main() {
int year, month;
printf("请输入年份: ");
scanf("%d", &year);
printf("请输入月份: ");
scanf("%d", &month);
printMonthCalendar(year, month);
return 0;
}
// 判断是否是闰年
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 获取月份的天数
int getMonthDays(int year, int month) {
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
return isLeapYear(year) ? 29 : 28;
default:
return 0;
}
}
// 打印月历
void printMonthCalendar(int year, int month) {
int days = getMonthDays(year, month);
int startDay = 1; // 假设每个月的第一天都是1号
int weekday = 0; // 需要计算每个月第一天是星期几
// 打印标题
printf(" Sun Mon Tue Wed Thu Fri Sat\n");
// 计算每个月第一天是星期几
// 这里需要一个更复杂的算法来确定weekday
// 此处简化处理,实际应用中需要根据具体年份和月份计算
// 打印空格以对齐
for (int i = 0; i < weekday; i++) {
printf(" ");
}
// 打印日期
for (int day = 1; day <= days; day++) {
printf("%4d", day);
if ((weekday + day) % 7 == 0) {
printf("\n");
}
}
}
#include <stdio.h>
#include <stdlib.h>
// 第一个程序中的函数
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int daysInMonth(int month, int year) {
switch (month) {
case 2: return isLeapYear(year) ? 29 : 28;
case 4: case 6: case 9: case 11: return 30;
default: return 31;
}
}
void printMonth(int year, int month) {
int days = daysInMonth(month, year);
int startDay = 1; // Assuming the first day is always Sunday
// Print month header
printf("%d-%02d ", year, month);
// Print days of the week header
printf("Sun Mon Tue Wed Thu Fri Sat\n");
// Print leading spaces for the first day of the month
for (int i = 0; i < startDay; i++) {
printf(" ");
}
// Print days of the month
for (int day = 1; day <= days; day++) {
printf("%3d", day);
if ((startDay + day - 1) % 7 == 0) {
printf("\n");
}
}
}
// 第二个程序的函数和主函数
void printMenu();
void calculateFutureDate();
void printYearCalendar(int year);
void printMonthCalendar(int year, int month);
int main()
{ int choice;
do {
printMenu();
printf("请输入您的选择(1-3),或者输入其他数字退出程序:");
scanf("%d", &choice);
switch(choice) {
case 1:
calculateFutureDate();
break;
case 2: {
int year;
printf("请输入年份:");
scanf("%d", &year);
printYearCalendar(year);
break;
}
case 3: {
int year, month;
printf("请输入年份和月份:");
scanf("%d %d", &year, &month);
printMonthCalendar(year, month);
break;
}
default:
printf("谢谢使用,再见!\n");
return 0;
}
} while(1);
return 0;
}
// 打印功能菜单
void printMenu() {
printf("==== 日历问题 ====\n");
printf("1. 计算未来天数和星期\n");
printf("2. 打印年历\n");
printf("3. 打印月历\n");
}
void calculateFutureDate() {
}
// 打印某年的日历
void printYearCalendar(int year) {
for (int month = 1; month <= 12; month++) {
printMonth(year, month);
printf("\n");
}
}
void printMonthCalendar(int year, int month) {
}