输入一个年份,判断是否为闰年,同时输入月份,判断是大月,小月还是平月、闰月。闰年的条件:year%400==0 || (year%4==0 && year%100!=0);
请问,大月,小月,平月,闰月的条件怎么判断??google不出来,郁闷中

解决方案 »

  1.   

    switch(month)
    case 1,3,5,7,8,10,12
       大月
    case 4,6,9,11
       平月
      

  2.   


    就是这样,这个大月、小月又没有什么数学规律,只能这样判断了另外,google也好、csdn也好,作为辅助的帮手可以,但不能过于依赖这些,还是要学会自己思考
      

  3.   

    大月不就是:1,3,5,7,8,10,12 
    小月就是:4,6,9,11 
    至于平月,闰月是2月根据平年润年而来的!switch(month) {
         case 1:
         case 3:
         case 5:
         case 7:
         case 8:
         case 10:
         case 12:
                 puts("大月");
                 break;
         case 4:
         case 6:
         case 9:
         case 11:
                 puts("小月");
                   break;
         case 2:
                 if(year%400==0 || (year%4==0 && year%100!=0))
                    puts("润月");
                 else
                    puts("平月");
                    break;
          defualt:
                 puts("月份数据错误!");
    }
      

  4.   

    sorry,搞错了!大月是:1,3,5,7,8,10,12
    小月是:4,6,9,11
    至于平月,闰月好像只有农历里讲平月或者润月,只有闰年里才有闰月(只有一个月为润月,其他为平月),平年里就就没有闰月。我个人是这么理解的!switch(month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
                puts("大月");
                break;
        case 4:
        case 6:
        case 9:
        case 11:
                puts("小月");
                  break;
        case 2:
                if(year%400==0 || (year%4==0 && year%100!=0))
                    puts("28;
                else
                    puts("29")
                    break;
          defualt:
                puts("月份数据错误!");
    }
    [/Quote]
      

  5.   

    我这里有个日历程序,很简单,相信对你有帮助
    import java.util.*;public class Year {
    public static void main(String[] args) {
    /**
     * 输入年,月
     */
    Scanner input = new Scanner(System.in);
    System.out.print("请输入年份:");
    int year = input.nextInt();
    System.out.print("请输入月份:");
    int month = input.nextInt(); /**
     * 判断润年
     */
    boolean run;
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
    run = true;
    System.out.println(year + "年是润年");
    } else {
    run = false;
    System.out.println(year + "年是平年");
    } /**
     * 计算整年天数(1900年1月1日至输入年-1年)
     */
    int tDays = 0;
    for (int i = 1900; i < year; i++) {
    if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
    tDays += 366;
    else
    tDays += 365;
    } /**
     * 计算本年本月之前天数
     */
    int days = 0, mDays = 0;
    for (int i = 1; i <= month; i++) {
    switch (i) {
    case 4:
    case 6:
    case 9:
    case 11:
    days = 30;
    break;
    case 2:
    if (run)
    days = 29;
    else
    days = 28;
    break;
    default:
    days = 31;
    }
    if (i < month)
    mDays += days;
    } /**
     * 计算总天数(1900年1月1日至输入年月前)
     */
    tDays += mDays; /**
     * 判断输入月启始周数
     */
    int fDays, weeke = tDays % 7 + 1;
    if (weeke == 7)
    fDays = 0;
    else
    fDays = weeke; /**
     * 打印输出
     */
    System.out.println(month + "月有" + days + "天");
    System.out.println("\n*******************" + year + "年" + month
    + "月日历*********************");
    System.out.println("");
    System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
    int i;
    for (i = 0; i < fDays; i++)
    System.out.print("\t");
    for (i = 1; i <= days; i++) {
    System.out.print(i + "\t");
    if ((tDays + i - 1) % 7 == 5)
    System.out.print("\n");
    }
    System.out.println("\n");
    System.out
    .println("******************************************************");
    }
    }输入年份,月份,就可以打印当月的日历
      

  6.   

    [/Quote]
    判断好了闰年或平年,从键盘输出一个月份,又怎样判断这个月份是不是闰月?还是搞不懂
      

  7.   

    如果用非要用一个表达式来判断一个月是大月还是小月可以用((m&1)^(m>>3&1))来判断,1是大月,0是小月.
    测试代码如下:
    import java.io.*; 
        public class Lamp { 
        public static void main(String[] args){ 
         for(int m=1; m<=12;m++){
         if(((m&1)^(m>>3&1))==1){
         System.out.println(m+"是大月");
         }else{
         System.out.println(m+"是小月");
         }
         }
        } 

    结果如下:
    F:\java>java Lamp
    1是大月
    2是小月
    3是大月
    4是小月
    5是大月
    6是小月
    7是大月
    8是大月
    9是小月
    10是大月
    11是小月
    12是大月
      

  8.   

    用Switch case 结构的代码比较合理
      

  9.   

    1: 0001
    2: 0010
    3: 0011
    4: 0100
    5: 0101
    6: 0110
    7: 0111
    8: 1000
    9: 1001
    10:1010
    11:1011
    12:1100m&1是把m的最低的一位取出来
    m>>3相当于m/8.
    整个表达式的意思是把m的最低的一位和最低的第4位取出来,再异或.异或的运算规律是异则为真,也就是不同的两个二进制位相异或,值为1.我们知道,奇数的最低位是1.
    判断一个月是大月:小于8时,是奇数;或大于8时,不是奇数.
    小于8的奇数,m>>3&1是0,则:(m&1)^(m>>3&1)==>1^0是1.
    大于8的非奇数:m>>3&1为1,则(m&1)^(m>>3&1)==0^1是1.
      

  10.   

    switch语句就可以了,为什么搞那么麻烦啊
    16楼才强大
      

  11.   

    我觉得用数组代替switch更好
    String xx(int year, int month){
    String r=null;
    boolean isR=isR(year); //判断闰年
    int m[] = {1, 0, 1 , 0, 1, 0 , 1, 1, 0, 1, 0, 1};
    if(month==2)
        r = isR ? "闰月" : "平月";
    else
        r = m[month]==0 ? "小月" : "大月";

    return r;
    }                          
      

  12.   

    不是只有 month==2时,才有闰月吧?