C语言题目1:年历显示。 功能要求: (1)输入一个年份,输出时在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。 (2)输入年月,输出该月的日历。
时间: 2024-02-20 11:02:39 浏览: 115
好的,以下是实现上述功能的C语言代码:
```c
#include <stdio.h>
// 判断是否为闰年
int is_leap_year(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return 1;
else
return 0;
}
// 获取某个月份的天数
int get_days_in_month(int year, int month)
{
int days_in_month[] = {31, 28 + is_leap_year(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return days_in_month[month - 1];
}
// 获取某年某月的第一天是星期几
int get_starting_day(int year, int month)
{
int day = 1;
int year_days = (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400;
int month_days = 0;
for (int i = 1; i < month; i++)
{
month_days += get_days_in_month(year, i);
}
int total_days = year_days + month_days + day;
return total_days % 7;
}
// 输出某年某月的日历
void print_month_calendar(int year, int month)
{
int days_in_month = get_days_in_month(year, month);
int starting_day = get_starting_day(year, month);
printf("%d年%d月的日历:\n", year, month);
printf(" 日 一 二 三 四 五 六\n");
for (int i = 0; i < starting_day; i++)
{
printf(" ");
}
for (int i = 1; i <= days_in_month; i++)
{
printf("%3d", i);
starting_day++;
if (starting_day % 7 == 0)
{
printf("\n");
}
}
if (starting_day % 7 != 0)
{
printf("\n");
}
}
// 输出某一年的日历
void print_year_calendar(int year)
{
for (int i = 1; i <= 12; i++)
{
print_month_calendar(year, i);
printf("\n");
}
}
int main()
{
int option;
int year, month;
printf("请选择功能:\n");
printf("1. 输出某年的日历\n");
printf("2. 输出某月的日历\n");
scanf("%d", &option);
if (option == 1)
{
printf("请输入年份(1940-2040):\n");
scanf("%d", &year);
print_year_calendar(year);
}
else if (option == 2)
{
printf("请输入年份(1940-2040):\n");
scanf("%d", &year);
printf("请输入月份(1-12):\n");
scanf("%d", &month);
print_month_calendar(year, month);
}
else
{
printf("无效的选项!\n");
}
return 0;
}
```
该程序可以实现根据用户输入的年份或年月输出该年或该月的日历。你可以根据需要进行修改和优化。
阅读全文