scala 入门练习

scala 入门练习

1:输入两个数,按从小到大排序后输出
2:输入三个数(互不相同),并将三个升序输出(升序(从小到大)
3:输入一个年份,判断是否是闰年
能被400整除
能被4整除,不能被100整除
4.输入一个时间,输出它的下一秒时间。
20:39:40 -->20:39:41
20:39:59 -->20:40:00
20:59:59 -->21:00:00
23:59:59 -->00:00:00
5.输出1000以内所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。
6.打印输出乘法口诀表(直角三角形)
7.在屏幕上输出以下内容:
12345
1234
123
12
1
8.给定一个n位的整数,将该数位逆置,例如给定12345变成54321,12320变成2321
要求:输入是数字–>打印的结果也要是一个数字 12345 -> 54321 12320 --> 2321 12032 -->23021
9.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字(1-9之间)计算的数据的个数是5。例如2+22+222+2222+22222
10.输入一个数,打印下述图形
输入5
打印
ABBBB
AABBB
AAABB
AAAAB
AAAAA

package lianxi

import scala.io.StdIn

/**
 * @author hty
 * @create 2021-05-31 17:17
 */
object HomeWork {
    def main(args: Array[String]): Unit = {
        f3()
    }

    //1:输入两个数,按从小到大排序后输出
    def f1(): Unit = {
        println("第一个数")
        val n1 = StdIn.readInt()
        println("第二个数")
        val n2 = StdIn.readInt()
        if(n1 < n2)
            print(s"$n1 - $n2")
        else
            println(s"$n2 - $n1")
    }
    //2:输入三个数(互不相同),并将三个升序输出(升序(从小到大)
    def f2():Unit = {
        println("第一个数")
        val n1 = StdIn.readInt()
        println("第二个数")
        val n2 = StdIn.readInt()
        println("第三个数")
        val n3 = StdIn.readInt()
       if(n1 < n2)
           if(n3 < n1)
               println(s"${n3} - ${n1} - ${n2}")
           else if(n3 > n2)
               println(s"${n1} - ${n2} - ${n3}")
           else
               println(s"${n1} - ${n3} - ${n2}")
       else
           if(n3 < n2)
               println(s"${n3} - ${n2} - ${n1}")
           else if(n3 > n1)
               println(s"${n2} - ${n1} - ${n3}")
           else
               println(s"${n2} - ${n3} - ${n1}")
    }
//    4.输入一个时间,输出它的下一秒时间。
    def f3(): Unit ={
        val time = StdIn.readLine("输入一个时间")
        val splits: Array[String] = time.split(":")
        var hour: Int = splits.apply(0).toInt
        var min: Int = splits.apply(1).toInt
        var sec: Int = splits.apply(2).toInt
        sec += 1
        if(sec == 60) {
            min += 1
            sec = 0
        }
        if(min == 60){
            hour += 1
            min = 0
        }
        if(hour == 24)
            hour = 0
        printf("%02d:%02d:%02d",hour,min,sec)
//        println(s"${hour}:${min}:${sec}")
    }
    //5.输出1000以内所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。
    def f4(): Unit = {
        for(i <- 100 to 999) {
            val b = i / 100
            val s = i % 100 /10
            val g = i % 100 % 10
            if(i == b * b * b + s * s * s + g * g * g) {
                println(i)
            }
        }
    }
    //6.打印输出乘法口诀表(直角三角形)
    def f5(): Unit = {
        for(i <- 1 to 9; j <- 1 to i) {
            print(s"$i * $j = ${i * j}\t")
            if(j == i) println()
        }
    }
    //7.在屏幕上输出以下内容:
    def f6(): Unit = {
        for(i <- 5 to 1 by -1; j <- 1 to i) {
            print(j + " ")
            if(j == i)
                println
        }
    }
    //8.给定一个n位的整数,将该数位逆置,例如给定12345变成54321,12320变成02321
    def f7(): Unit = {
        val num = StdIn.readLine("请输入一个整数")
        val str = for (i <- num reverse) yield i
        println(str.toLong)
    }
    //9.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字(1-9之间)计算的数据的个数是5。例如2+22+222+2222+22222
    def f8(): Unit = {
        print("请输入a")
        val a: Int = StdIn.readInt()
        println("请输入num")
        val num: Int = StdIn.readInt()
        //方法一
//        var sum = 0
//        for(i <- 1 to num) {
//            sum += ((a + "") * i).toInt
//        }
        //方法二
        var tmp: Int = 0
        var sum: Int = 0
        for(i <- 1 to num) {
            tmp = tmp * 10 + a
            println(tmp)
            sum += tmp
        }
        print(sum)
    }
    //输入一个数,打印下述图形
//    ABBBB
//    AABBB
//    AAABB
//    AAAAB
//    AAAAA
    def f9(): Unit = {
    println("请输入一个整数")
    val n = StdIn.readInt()
    for(i <- 1 to n;j <- n - 1 to i by -1){
        print(" ")
        if(j == i)
        println("A" * i + "B" * (n - j))

    }
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值