scala练习题--万年历

 使用方法去完成

import scala.io.StdIn

object work1 {
  def main(args: Array[String]): Unit = {
    //    1.先输出提示语句,并接受用户输入的年,月
    println("请输入年:")
    var year = StdIn.readInt()
    println("请输入月:")
    var month = StdIn.readInt()

    //    2.根据用户输入的年,先判断是否是闰年
    def reiNian(nian: Int): Boolean = {
      if (nian % 400 == 0) {
        return true
      }
      if (nian % 4 == 0 && nian % 100 != 0) {
        return true
      } else false
    }

    //    3.根据用户输入的月来判断月的天数
    def getNowMonthDays(year: Int, month: Int): Int = {
      if (month == 4 || month == 6 || month == 9 || month == 11) {
        return 30
      } else if (month == 4) {
        return if (reiNian(year)) 29 else 28;
      } else return 31
    }

    //    4.用循环计算用户输入的年份距离1900年1月1日的总天数
    def getFormNowYearTo1900TotalDays(year: Int): Int = {
      var sumdayyear = 0
      for (i <- 1900 to year) {
        sumdayyear = sumdayyear + (if (reiNian(year)) 366 else 365)
      }
      return sumdayyear
    }

    //    5.用循环计算用户输入的月份距输入的年份的1月1日共有多少天
    def getNowYearToDays(year: Int, month: Int): Int = {
      var sumday = 0
      for (i <- 1 to month) {
        sumday = sumday + getNowMonthDays(year, i)
      }
      return sumday
    }

    //    6.相加第4步与第5步的天数,得到总天数.
    var totalDaysY = getFormNowYearTo1900TotalDays(year);
    var totalDaysM = getNowYearToDays(year, month);
    var totalDays = totalDaysY + totalDaysM

    //    7.用(总天数+ 1)%7来计算输入的月的第一的星期数
    def getweek(totalDays: Int): Int = {
      return (totalDays + 1) % 7
    }

    //    8.根据第7步得到的值格式化输出这个月的日历
    def FormatCalendar(week: Int, year: Int, month: Int): Unit = {
      var cut = 0; //记数  判断是否是到7 如果到7就换行
      println("星期日\t\t星期一\t\t星期二\t\t星期三\t\t星期四\t\t星期五\t\t星期六")
      //星期数的打印
      for (i <- 1 to week) {
        print("\t\t")
        cut = cut + 1
      }
      //打印月份对应天数
      for (i <- 1 to getNowMonthDays(year, month)) {
        //打印值
        print(i + "\t\t");
        cut = cut + 1
        if (cut % 7 == 0) {
          println()
        }
      }
    }
    FormatCalendar(getweek(totalDays), year, month)
  }
}

  使用函数去完成

import scala.io.StdIn

object work2 {
  def main(args: Array[String]): Unit = {
    //    1.先输出提示语句,并接受用户输入的年,月
    println("请输入年:")
    var year = StdIn.readInt()
    println("请输入月:")
    var month = StdIn.readInt()

    //    2.根据用户输入的年,先判断是否是闰年

    val reiNian=(year:Int)=> {
      if (year % 400 == 0) {
         true
      }
      if (year % 4 == 0 && year % 100 != 0) {
         true
      } else false
    }

    //    3.根据用户输入的月来判断月的天数
    val getNowMonthDays=(year: Int, month: Int) =>{
      if (month == 4 || month == 6 || month == 9 || month == 11) {
          30
      } else if (month == 4) {
         if (reiNian(year))  29 else  28
      } else   31
    }

    //    4.用循环计算用户输入的年份距离1900年1月1日的总天数
    val getFormNowYearTo1900TotalDays=(year: Int)=>{
      var sumdayyear:Int =0
      for (i <- 1900 to year) {
        sumdayyear = sumdayyear + (if (reiNian(year)) 366 else 365)
      }
      println(sumdayyear)
       sumdayyear
    }
    println("****")
    //    5.用循环计算用户输入的月份距输入的年份的1月1日共有多少天
    val getNowYearToDays=(year:Int,month:Int)=> {
      var sumdaymonth:Int= 0
      for (i <- 1 to month) {
        sumdaymonth = sumdaymonth + getNowMonthDays(year, i)
      }
      println("****")
      println(sumdaymonth)
      sumdaymonth
    }

    //    6.相加第4步与第5步的天数,得到总天数.
    var totalDaysY:Int = getFormNowYearTo1900TotalDays(year)
    var totalDaysM:Int = getNowYearToDays(year, month)
    var totalDays = totalDaysY + totalDaysM

    //    7.用(总天数+ 1)%7来计算输入的月的第一的星期数
    val getweek=(totalDays: Int)=> {
       (totalDays + 1) % 7
    }

    //    8.根据第7步得到的值格式化输出这个月的日历
    val FormatCalendar=(week: Int, year: Int, month: Int) => {
      var cut = 0; //记数  判断是否是到7 如果到7就换行
      println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六")
      //星期数的打印
      for (i <- 1 to week) {
        print("\t\t")
        cut = cut + 1
      }
      //打印月份对应天数
      for (i <- 1 to getNowMonthDays(year, month)) {
        //打印值
        print(i + "\t\t");
        cut = cut + 1
        if (cut % 7 == 0) {
          println()
        }
      }
    }
    FormatCalendar(getweek(totalDays), year, month)
  }
}

  

猜你喜欢

转载自www.cnblogs.com/liangyan131/p/11999758.html