输入年月 打印万年历

package com.test;
import java.util.Calendar;
import java.util.Scanner;

public class WanNianLi {

public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 用户输入年月,打印该月份万年历 
* 1 创建扫描器 2 获取输入 3 判断月份天数 4设置数据5打印
*/
// 扫描器
Scanner scanner = new Scanner(System.in);
// 获取输入
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份");
int month = scanner.nextInt();
int days = 0;
// 计算一下每个月的天数
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if (year % 4 == 0) {
days = 29;
} else {
days = 28;
}
break;
default:
System.out.println("请输入正确的月份(1-12)");
break;
}

// 创建一个calendar 设置对象的年月为输入的值
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
// 计算该月的第一天是周几
int week = calendar.get(Calendar.DAY_OF_WEEK);
int count = 0;// 计数器

System.out.println("周日\t周一\t周二\t周三\t周四\t周五\t周六");

// 打印空格
for (int i = 0; i < week - 1; i++) {
count++;
System.out.print("\t");
}
// 打印天
for (int day = 1; day < days + 1; day++) {
count++;



System.out.print(day + "\t");   

                 //每七天跳转一行

if (count % 7 == 0) {
System.out.println();
}
}
}
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,下面是实现上述要求的 C 语言代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> // 判断是否为闰 int isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } // 获取某的天数 int getDaysOfMonth(int year, int month) { int days[] = {31, 28 + isLeapYear(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; return days[month - 1]; } // 获取某1号是星期几 int getWeekday(int year, int month) { struct tm t = {0}; t.tm_year = year - 1900; t.tm_mon = month - 1; t.tm_mday = 1; mktime(&t); return t.tm_wday; } // 打印日历表头 void printCalendarHeader() { printf("日\t一\t二\t三\t四\t五\t六\n"); } // 打印日历 void printCalendarOfMonth(int year, int month) { printf("%d%d\n", year, month); printCalendarHeader(); int days = getDaysOfMonth(year, month); int weekday = getWeekday(year, month); // 打印第一行(1号前面的空格) for (int i = 0; i < weekday; i++) { printf("\t"); } for (int i = 1; i <= 7 - weekday; i++) { printf("%d\t", i); } printf("\n"); // 打印中间若干行 int count = 7 - weekday + 1; while (count <= days) { for (int i = count; i <= count + 6 && i <= days; i++) { printf("%d\t", i); } printf("\n"); count += 7; } } // 打印的所有日历 void printCalendarOfYear(int year) { printf("%d\n", year); for (int i = 1; i <= 12; i++) { printCalendarOfMonth(year, i); printf("\n"); } } // 获取日期是星期几 int getWeekdayOfDate(int year, int month, int day) { struct tm t = {0}; t.tm_year = year - 1900; t.tm_mon = month - 1; t.tm_mday = day; mktime(&t); return t.tm_wday; } int main() { int choice; do { printf("\n请选择功能:\n"); printf("1. 输入日,计算相应日期是星期几。\n"); printf("2. 输入,输出相应份的日历。\n"); printf("3. 输入年份,输出该所有日历。\n"); printf("4. 退出。\n"); scanf("%d", &choice); switch (choice) { case 1: { int year, month, day; printf("请输入年份:"); scanf("%d", &year); printf("请输入份:"); scanf("%d", &month); printf("请输入日期:"); scanf("%d", &day); int weekday = getWeekdayOfDate(year, month, day); printf("%d%d%d日是星期%d。\n", year, month, day, weekday); break; } case 2: { int year, month; printf("请输入年份:"); scanf("%d", &year); printf("请输入份:"); scanf("%d", &month); printCalendarOfMonth(year, month); break; } case 3: { int year; printf("请输入年份:"); scanf("%d", &year); printCalendarOfYear(year); break; } case 4: { printf("退出程序。\n"); break; } default: { printf("无效的选择,请重新输入。\n"); break; } } } while (choice != 4); return 0; } ``` 这段代码实现了一个带菜单的万年历程序,可以根据用户选择执行不同的功能。可以输入日,计算相应日期是星期几;输入,输出相应份的日历输入年份,输出该所有日历;具有退出功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文质木木

您的打赏是我更新优质作品的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值