写一个方法,能实现数值星期和中文星期的转换,如7会转换为星期天, 1会转换为星期一。

public class Test1{
     public void week(int week){
         switch (week) {
        case 1:
            System.out.println("星期一");
            break;
        case 2:
            System.out.println("星期二");
            break;
        case 3:
            System.out.println("星期三");
            break;
        case 4:
            System.out.println("星期四");
            break;
        case 5:
            System.out.println("星期五");
            break;
        case 6:
            System.out.println("星期六");
            break;
        case 7:
            System.out.println("星期日");
            break;
        default:
            System.out.println("这个星期不存在");
            break;
        }

     }
public static void main(String[] args) {
    Test1 test1=new Test1();
    test1.week(8);
}
}
以下是一个简单的万年历的实现,包括了菜单界面和阳历转换成农历的功能。请注意,这里使用的农历算法是比较简单的,可能存在误差。如果需要更准确的结果,可以参考更复杂的农历算法。 ```c #include <stdio.h> // 计算某一年是否为闰年 int isLeapYear(int year) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { return 1; } else { return 0; } } // 计算某一年某一月有多少天 int getDaysOfMonth(int year, int month) { int days = 31; if (month == 4 || month == 6 || month == 9 || month == 11) { days = 30; } else if (month == 2) { if (isLeapYear(year)) { days = 29; } else { days = 28; } } return days; } // 计算某一年某一月一号是星期几(0表示星期日,1表示星期一,以此类推) int getWeekdayOfFirstDay(int year, int month) { int y, c, m, d; y = year; if (month < 3) { m = month + 12; y--; } else { m = month; } c = y / 100; y = y % 100; d = 1; int w = (c / 4) - 2 * c + y + (y / 4) + ((13 * (m + 1)) / 5) + d - 1; if (w < 0) { w += 7; } return w % 7; } // 显示某一年某一月的月历 void printMonth(int year, int month) { printf(" %d年%d月\n", year, month); printf("日 一 二 三 四 五 六\n"); int weekdayOfFirstDay = getWeekdayOfFirstDay(year, month); int daysOfMonth = getDaysOfMonth(year, month); int i; for (i = 0; i < weekdayOfFirstDay; i++) { printf(" "); } for (i = 1; i <= daysOfMonth; i++) { printf("%2d ", i); if ((i + weekdayOfFirstDay) % 7 == 0) { printf("\n"); } } if ((i + weekdayOfFirstDay) % 7 != 0) { printf("\n"); } } // 显示阳历转换成农历的结果 void printLunarDate(int year, int month, int day) { // 农历月份名称 char *lunarMonthNames[] = { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" }; // 农历日期名称 char *lunarDayNames[] = { "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十" }; // 公历日期名称 char *solarDayNames[] = { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十", "三十一" }; // 农历日期数值 int lunarYear, lunarMonth, lunarDay; // 1900年1月31日是农历初一 int baseYear = 1900, baseMonth = 1, baseDay = 31; // 公历日期数值 int solarDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int solarYear, solarMonth, solarDay; // 判断闰年 if (isLeapYear(year)) { solarDays[1] = 29; } // 计算公历日期数值 solarYear = year; solarMonth = month; solarDay = day; // 计算公历日期是这一年的第几天 int i, days = 0; for (i = 0; i < solarMonth - 1; i++) { days += solarDays[i]; } days += solarDay; // 计算公历日期是1900年1月31日后的第几天 int totalDays = (year - baseYear) * 365 + (year - baseYear) / 4 + days - 1; // 计算农历日期数值 lunarYear = baseYear; lunarMonth = baseMonth; lunarDay = baseDay; while (totalDays > 0) { int daysOfMonth = getDaysOfMonth(lunarYear, lunarMonth); if (totalDays >= daysOfMonth) { totalDays -= daysOfMonth; lunarMonth++; if (lunarMonth > 12) { lunarYear++; lunarMonth = 1; } } else { lunarDay += totalDays; totalDays = 0; } } // 输出结果 printf("%d年%d月%d日是%s%s\n", year, month, day, lunarMonthNames[lunarMonth-1], lunarDayNames[lunarDay-1]); } // 显示菜单 void showMenu() { printf("1. 显示月历\n"); printf("2. 阳历转换成农历\n"); printf("3. 退出程序\n"); } int main() { int choice; int year, month, day; while (1) { showMenu(); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入年份和月份(格式:yyyy mm):"); scanf("%d %d", &year, &month); printMonth(year, month); break; case 2: printf("请输入阳历日期(格式:yyyy mm dd):"); scanf("%d %d %d", &year, &month, &day); printLunarDate(year, month, day); break; case 3: return 0; default: printf("无效的选择,请重新输入。\n"); break; } } return 0; } ``` 使用该代码可以实现一个简单的万年历,包括了菜单界面和阳历转换成农历的功能。你可以根据需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值