如何让用户输入年月并动态打印对应的日历?
时间: 2024-10-18 09:24:40 浏览: 16
如果你想让用户输入年月,并动态打印对应的日历,可以在`main`函数中添加用户交互部分。这里我们可以使用`scanf`函数获取用户的输入,然后传递给`print_calendar`函数。以下是修改后的示例:
```c
#include <stdio.h>
#include <time.h>
// ... (保留上面的print_calendar函数)
int main() {
int year, month;
printf("请输入年份(四位数): ");
scanf("%d", &year);
printf("请输入月份(1-12): ");
scanf("%d", &month);
if (month < 1 || month > 12) {
printf("错误:月份无效,请输入1-12。\n");
return 1; // 返回错误码
}
print_calendar(year, month);
return 0;
}
```
在这个版本中,首先提示用户输入年份和月份,然后检查月份是否在有效范围内。如果输入正确,就调用`print_calendar`打印日历;否则,显示错误信息并退出。
相关问题
用java写一个控制台输入年月日,打印出本月日历
好的,以下是Java代码实现:
```java
import java.util.*;
public class PrintCalendar {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入日期(格式:2022-01):");
String str = input.nextLine(); // 例如输入:2022-01
String[] arr = str.split("-");
int year = Integer.parseInt(arr[0]);
int month = Integer.parseInt(arr[1]);
input.close();
// 获取当月的天数和第一天是星期几
int days = getDaysOfMonth(year, month);
int firstDayOfWeek = getFirstDayOfWeek(year, month);
// 输出日历
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i <= days; i++) {
if (i == 1) {
for (int j = 0; j < firstDayOfWeek; j++) {
System.out.print("\t");
}
}
System.out.print(i + "\t");
if ((i + firstDayOfWeek) % 7 == 0) {
System.out.println();
}
}
}
// 获取当月的天数
public static int getDaysOfMonth(int year, int month) {
int days = 0;
if (month == 2) {
days = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
return days;
}
// 获取当月第一天是星期几(星期日为0,星期一为1,...,星期六为6)
public static int getFirstDayOfWeek(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(year, month - 1, 1);
return c.get(Calendar.DAY_OF_WEEK) - 1; // 对应上面的0~6
}
}
```
使用示例:
```
请输入日期(格式:2022-01):2022-01
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
```
Java输入一个年份和月份,打印出对应的日历包括星期
在Java中,你可以使用`java.time`包下的`MonthDay`和`YearMonth`类来获取给定年月的日历信息,包括星期几。以下是一个简单的示例:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// 获取用户输入的年份和月份
int year = Integer.parseInt(args[0]);
int month = Integer.parseInt(args[1]);
// 创建日期对象
LocalDate date = LocalDate.of(year, month, 1);
// 格式化日期并获取星期几
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = date.format(formatter);
System.out.println("Formatted Date: " + formattedDate);
// 获取星期几 (0表示星期一,6表示星期日)
int dayOfWeek = date.getDayOfWeek().getValue();
String weekDayName = LocalDate.getDayOfWeek(dayOfWeek).getDisplayName(TextStyle.FULL, Locale.getDefault());
System.out.println("Week Day: " + weekDayName);
// 打印完整月份的日历
for (int i = 1; i <= date.lengthOfMonth(); i++) {
System.out.printf("%d ", i);
if ((i % 7) == 0) { // 每一行结束
System.out.println();
}
}
}
}
```
这个程序首先将输入转换成`LocalDate`对象,然后使用`DateTimeFormatter`格式化日期并获取星期几。最后,它遍历整个月份,打印出每一天。
阅读全文