Scala编程题二

1.定义一个方法,该方法能够找出两个小数中的较小值并返回。在主方法中调用方法进行测试

object Recursion {
  def main(args: Array[String]): Unit = {
    println("请输入第一个数字")
    var fun = StdIn.readInt()
    println("请输入第二个数字")
    var fun2 = StdIn.readInt()
    println("较小值为:")
    println(num(fun,fun2))
  }
  def num(i:Int,n:Int):Int={//返回值类型必须要有不能为空,会括号
    if(i>n){
       return n
    }else{
      return i
    }
  }
}
输出:
请输入第一个数字
2
请输入第二个数字
3
较小值为:
2

2.数字是有绝对值的,负数的绝对值是它本身取反,非负数的绝对值是它本身。 请定义一个方法,方法能够得到小数类型数字的绝对值并返回。请定义方法并测试。

object absoluteValue{
  def main(args: Array[String]): Unit = {
    var num:Double= -3.14;
    println(number(num))
  }
  def number(num:Double):Double = {
    if(num<0){
      //如果数字是负数则取反
      -num
    }else{
    //如果是非负数则返回本身
    num
    }
  }
}
输出:
3.14

3.企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%; 利润高于10万元,低于或等于20万元时,高于10万元的部分,可提成7.5%; 高于20万,低于或等于40万时,高于20万元的部分,可提成5%; 高于40万,低于或等于60万时,高于40万元的部分,可提成3%; 高于60万,低于或等于100万时,高于60万元的部分,可提成1.5%, 高于100万元时,超过100万元的部分按1%提成,在程序中设定一个变量为当月利润, 求应发放奖金总数?

object Profit {
  def main(args: Array[String]): Unit = {
    var bonus:Double = 0
    var profit:Double=150000
    if(profit<=100000){
      bonus=profit*0.1
    }else if (profit<=200000){
      bonus=10000+(profit-100000)*0.075
    }else if (profit<=400000){
      bonus=17500+(profit-200000)*0.05

    }else if (profit<=600000){
      bonus=27500+(profit-400000)*0.03

    }else if(profit<=1000000){
      bonus=33500+(profit-600000)*0.015

    }else{
      bonus=36500+(profit-1000000)*0.01

    }
    println(s"发放奖金为 $bonus ¥")//格式化"s"
  }

}

4.定义一个方法,通过键盘录入两个整数n和m。 n代表行数,m代表列数。  定义一个方法,方法的功能是打印n行m列的@符号. 执行效果如下:

object Recursion2{
  def main(args: Array[String]): Unit = {
    println("请输入行数")
    var n = StdIn.readInt()
    println("请输入列数:")
    var m = StdIn.readInt()
    number(n,m)
  }
  def number(i:Int,j:Int):Unit={
    for(i<- 0 until i){
      for(j<-0 until j){
        print("@")
      }
      println()
    }
  }
}
输出:
请输入行数
2
请输入列数:
3
@@@
@@@

5.假设某员工今年的年薪是30000元,年薪的年增长率6%。 编写一个Java应用程序计算该员工10年后的年薪,并统计未来10年(从今年算起)总收入。

object Bouns2{
  def main(args: Array[String]): Unit = {
    var salary:Double = 30000.0
    var sum :Double=30000.0
    for(year<- 1 to 10){
      salary=salary*(1+0.06)
      sum = sum +salary
    }
    println("第十年后的年薪为:"+salary)
    println("总收入" + sum)
  }
}
输出:
第十年后的年薪为:53725.43089628564
总收入449149.27916771255

6.判断一个数字是否能被5和6同时整除(打印能被5和6整除), 或只能被5整除(打印能被5整除),或只能被6整除,(打印能被6整除), 不能被5或6整除,(打印不能被5或6整除)

object Divisible{
  def main(args: Array[String]): Unit = {
    println("请输入数字")
    var n = StdIn.readInt()
    if(n%5 == 0 && n%6 == 0){
      println("打印能被5和6整除")
    }else if(n%5 == 0 && n%6 != 0){
      println("打印能被5整除")
    }else if(n%5 != 0 && n%6 == 0){
      println("打印能被6整除")
    }else{
      println("打印不能被5和6整除")
    }
  }
}
输出:
请输入数字
2
打印不能被5和6整除

7.输入一个年份,判断这个年份是否是闰年 ,世纪闰年需要考虑

object leapYear{
  def main(args: Array[String]): Unit = {
    println("请输入年份")
    var leap=StdIn.readInt()
    if( (leap%4==0 && leap % 100 != 0) || leap % 400==0){
      println("你输入的是闰年")
    }else{
      println("你输入的不是闰年")
    }

  }
}
输出:
请输入年份
1900
你输入的不是闰年

8.输入三个整数x,y,z,请把这三个数由小到大输出

object number2{
  def main(args: Array[String]): Unit = {
    println("请输入第一个数字")
    var x = StdIn.readInt()
    println("请输入第二个数字")
    var y = StdIn.readInt()
    println("请输入第三个数字")
    var z = StdIn.readInt()
    var i =0//临时变量

    if (x > y) {
      i = y
      y = x
      x = i
    }
    if (x > z) {
      i = z
      z = x
      x = i
    }
    if (y > z) {
      i = z
      z = y
      y = i
    }
    println("从小到大排序后的结果:")
    println(x+"<"+y+"<"+z)
  }
}
输出:
请输入第一个数字
5
请输入第二个数字
4
请输入第三个数字
9
从小到大排序后的结果:
4<5<9

9.编写一个程序,计算邮局汇款的汇费。如果汇款金额小于100元, 汇费为一元,如果金额在100元与5000元之间,按1%收取汇费, 如果金额大于5000元,汇费为50元。 汇款金额由命令行输入.

object Remittance2{
  def main(args: Array[String]): Unit = {
    println("请输入汇款金额")
    var fee = StdIn.readDouble()
    var salary:Double =0
    if(fee>0&&fee<100){
      salary=1
    }else if(fee<=5000){
      salary=1+(fee-100)*0.01
    }else{
      salary=salary+50
    }
    println("你需要花费的汇费"+salary)
  }
}
输出:
请输入汇款金额
4999
你需要花费的汇费49.99

10.在一个有8个整数(18,25,7,36,13,2,89,63)的数组中找出其中最大的数及其下标。

object Sort2 {
  def main(args: Array[String]): Unit = {

      var c = Array(18,25,7,36,13,2,89,63)
      var max_value = c(0)
      for (x<- 0 to c.length-1){
        if(max_value < c(x)){
          max_value=c(x)
        }
      }
      println(c.length-1)
      println("最大的数"+max_value)
  }

}
输出:
7
最大的数89

11.给定一个有9个整数(1,6,2,3,9,4,5,7,8)的数组,先排序,然后输出排序后的数组的值。

object BUbbleSort {
  def main(args: Array[String]): Unit = {

    var arr = Array(1,6,2,3,9,4,5,7,8)
    var tmp = 0
    for (i <- 0 until arr.length - 1; j <- 0 until arr.length - 1 - i) {
      if (arr(j) > arr(j + 1)) {
        tmp = arr(j)
        arr(j) = arr(j + 1)
        arr(j + 1) = tmp
      }
    }
    println(arr.toList)
  }

}
输出:
List(1, 2, 3, 4, 5, 6, 7, 8, 9)

12.由命令行输入一个4位整数,求将该数反转以后的数,如原数为1234,反转后的数位4321

object reversa{
  def main(args: Array[String]): Unit = {
    println("输入一个4位整数")
    var reversal = StdIn.readInt();
    var thousands = reversal / 1000
    var hundreds = reversal / 100 % 10
    var tens = reversal / 10 % 10
    var one = reversal % 10
    println("反转的数为"+one+tens+hundreds+thousands)
  }
}
输出:
输入一个4位整数
2146
反转的数为6412

13.分别使用for循环求1到100之间所有能被3整除的整数的和。

object number3{
  def main(args: Array[String]): Unit = {
    var a =1
    var sum =0
    for(a <- 1 to 100) {
      if (a%3==0) {
        sum = sum + a
      }
    }
    println(sum)

  }
}
输出:
1683

14.while循环求1到100之间所有能被3整除的整数的和

object number4{
  def main(args: Array[String]): Unit = {
    var a = 0
    var sum =0
    while (a<100){
      if (a%3==0) {
        sum = sum + a
      }
      a=a+1
    }
    println(sum)

  }
}
输出:
1683

15.do……while循环求1到100之间所有能被3整除的整数的和

object number5{
  def main(args: Array[String]): Unit = {
    var a =0
    var sum =0
    do{
      if (a%3==0) {
        sum = sum + a
      }
      a=a+1

      }while (a<100)

    println(sum)

  }
}
输出:
1683

16.编写一个程序,找出大于200的最小的质数

object PrimeNumber{
  def main(args: Array[String]): Unit = {
    var i = 201
    var t = true
    while(t){
      var b =true
      for(e <-2 to i/2){
        if(i%e==0){
          b=false
        }
      }
      if(b==true){
        println(i)
        t=false
      }
      i+=1
    }
  }
}
输出:
211

17.使用Scala打印九九乘法表

for (i <- 1 to 9; j <- 1 to i) {
      print(s"${i}*${j}=${i * j}\t")
      if (i == j) println()
    }
输出:
1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

18.给定一个有9个整数(1,6,2,3,9,4,5,7,8)的数组,输出排序后的数组的值。(选择排序)

val array = Array(1,6,2,3,9,4,5,7,8)
    for (i<- 0 until array.length-1){
      var minIndex = i
      for (j<- i until array.length-1){
        if (array(minIndex)>array(j+1)){
          minIndex = j+1
        }
      }
      val tmp:Int = array(i)
      array(i) = array(minIndex)
      array(minIndex) = tmp
    }
    var k = 0
    for(k <- 0 to  array.length - 1){
      print(array(k)+" ")
    }
  }
}
输出:
1 2 3 4 5 6 7 8 9 

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lambda-小张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值