输入年份、月份,即可求得本月一共多少天

/*     

  1.  * Copyright (c) 2012, 烟台大学计算机学院      
     * All rights reserved.      
     * 作    者:赵兰
     * 完成日期:2012 年 10 月 31日      
     * 版 本 号:v1.0      
     * 输入描述:本月有几天   
     * 问题描述:输入年份、月份,即可求得本月一共多少天    
     * 程序输出:本月一共多少天   
     * 问题分析:先判断是否为闰年,然后根据所输入的月份进行输出   
     * 算法设计:      
     */ 我的代码:
    
    
    

    #include <iostream>
    #include <Cmath>
    using namespace std;
    int main(){
    int year,month;
    cout<<"请输入年月:";
    cin>>year>>month;
    if(month>12){
      cout<<"输入有误!请重新输入!"<<endl;}
    else{
      if(month==2){
      
       if(year%4==0 && year%100!=0||year%400==0)    //判断是否是闰年  
                {    
                    cout<<"该月有29天"<<endl; 
                } 
                else 
                {    
                    cout<<"该月有28天"<<endl; 
                } 
            } 
            else 
                if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)  //一系列的判断条件  
                    cout<<"该月有31天"<<endl; 
                else 
                    cout<<"该月有30天"<<endl; 
        } 
        return 0; 
    }
    
    
    
    

  2. 输出结果:

 

### 回答1: 好的,我会给出一个 Java 程序来帮助您打印日历图。 首先,我们需要一个函数来计算给定年份月份天数。我们可以使用 Java 的 `Calendar` 类来实现这一点。 ``` import java.util.Calendar; public static int getDaysInMonth(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month); return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } ``` 然后,我们可以使用这个函数来打印日历图。我们还需要一个函数来计算给定年份月份的第一是星期几。 ``` import java.util.Calendar; public static int getFirstDayOfWeek(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month); calendar.set(Calendar.DAY_OF_MONTH, 1); return calendar.get(Calendar.DAY_OF_WEEK); } ``` 现在,我们可以使用这两个函数来打印日历图。首先,我们打印月份的名称和年份,然后打印星期的名称。 ``` import java.util.Calendar; public static void printCalendar(int year, int month) { // 获取当前月份天数 int daysInMonth = getDaysInMonth(year, month); // 获取当前月份第一是星期几 int firstDayOfWeek = getFirstDayOfWeek(year, month); // 打印月份名称和年份 System.out.println(getMonthName(month) + " " + year); // 打印星期名称 System.out.println("Su Mo Tu We Th Fr Sa"); // 打印空白日期 for (int i = 1; i < firstDayOfWeek; i++) { System.out.print(" " ### 回答2: 实现以上功能可以采用以下步骤: 1. 首先,要根据用户输入年份月份来确定该月的天数。可以使用Java的Calendar类来获得某个月的天数。使用如下代码获取某年某月的天数: ```java int year = 2021; // 用户输入年份 int month = 8; // 用户输入月份 Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, 1); int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); ``` 2. 然后,要确定起始日期是星期几,根据题目的条件,1900年1月1日是星期一,所以可以计算从1900年1月1日到用户输入年份月份所表示的日期的总天数,并对7取模得到当前月份的起始日期的星期几。使用如下代码计算: ```java int totalDays = 0; for (int i = 1900; i < year; i++) { if (calendar.isLeapYear(i)) { // 判断是否为闰年 totalDays += 366; } else { totalDays += 365; } } for (int i = 1; i < month; i++) { calendar.set(year, i - 1, 1); totalDays += calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } int startDayOfWeek = (totalDays + 1) % 7; // 计算当前月份的起始日期的星期几,星期一为0,星期二为1,依此类推 ``` 3. 接下来,可以使用循环打印日历图。使用如下代码打印: ```java System.out.println("星期一 星期二 星期三 星期四 星期五 星期六 星期日"); for (int i = 0; i < startDayOfWeek; i++) { System.out.print(" "); // 打印起始日期之前的空格 } for (int i = 1; i <= days; i++) { System.out.printf("%7d", i); // 打印日期 if ((startDayOfWeek + i) % 7 == 0) { System.out.println(); // 每打印7个日期换行 } } ``` 以上是根据用户输入年份月份打印日历图的实现方法,可以将以上代码整合到一个方法中,并对异常情况进行处理。 ### 回答3: 可以通过以下步骤来实现根据用户输入年份月份打印日历图。 1. 首先,需要获取用户输入年份月份。可以使用Scanner类来实现。 2. 接下来,需要计算输入月份的第一是星期几。根据题目给出的条件,已知1900年1月1日是星期一。可以通过计算经过的天数求得所需日期的星期几。 3. 然后,需要确定输入月份天数。可以使用Calendar类的getActualMaximum方法来获取。 4. 最后,要按照日历的形式打印输出。可以使用循环来实现。先打印星期几的标题行,再打印每一的日期。可以使用格式化输出来对齐输出的内容。 下面是一种可能的实现方式,具体代码如下: ```java import java.util.Scanner; import java.util.Calendar; public class CalendarPrinter { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入年份:"); int year = scanner.nextInt(); System.out.print("请输入月份:"); int month = scanner.nextInt(); // 计算第一是星期几 Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, 1); int firstDayOfWeek = (calendar.get(Calendar.DAY_OF_WEEK) - 1 + 7) % 7; // 确定月份天数 int daysOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); // 打印输出 System.out.println("==============================="); System.out.printf(" %d年%d月%n", year, month); System.out.println("==============================="); System.out.println("日 一 二 三 四 五 六"); // 打印空格 for (int i = 0; i < firstDayOfWeek; i++) { System.out.print(" "); } // 打印日期 for (int i = 1; i <= daysOfMonth; i++) { System.out.printf("%2d ", i); if ((firstDayOfWeek + i) % 7 == 0) { System.out.println(); } } System.out.println(); System.out.println("==============================="); scanner.close(); } } ``` 这样,用户输入年份月份即可打印出对应的日历图。在打印日期时,如果一个月的第一不是星期一,那么需要在前面打印相应的空格。每打印7个日期后换行。输出的格式与日历类似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值