IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 算法(第四版)-算法练习(1)-(1.1.1-1.1.7)-kotlin -> 正文阅读

[移动开发]算法(第四版)-算法练习(1)-(1.1.1-1.1.7)-kotlin

本系列博客的习题都来自《算法(第四版)》,如果有其他人也在看这本书,欢迎来评论区多多交流

1.1.1 给出以下表达式的值:

   a. ( 0 + 15 ) / 2

   b. 2.0e-6 * 100000000.1

   c. true && false || true && true

代码

    @Test
    fun test1_1_1(){
        println((0 + 15) / 2)
        println(2.0e-6 * 100000000.1)
        println(true && false || true && true)
    }

答案

    7   //int类型数据,所以输出7
    200.0000002    //浮点型
    true    //true && false || true && true  -> false || true && true -> true && true -> true

1.1.2 给出以下表达式的类型和值:

   a. (1 + 2.236)/2

   b. 1 + 2 + 3 + 4.0

   c. 4.1 >= 4

   d. 1 + 2 + "3"

代码

    @Test
    fun test1_1_2(){
        println((1 + 2.236) / 2)
        println(1 + 2 + 3 + 4.0)
        println(4.1 >= 4)
        test_1_1_2_()
    }

    public void test_1_1_2_() {
        System.out.println(1 + 2 + "3");
    }

?答案

1.618 //浮点型
10.0 //由于4.0是浮点数,所以结果转为浮点型
true //真
33 //数字转成了字符串 1 + 2 + "3" -> 3+"3" -> "33"

1.1.3 编写一个程序,从命令行得到三个整数参数。如果它们都相等则打印 equal,否则打印 not equal

代码?

    @JvmStatic
    fun main(args: Array<String>) {
        test1_1_3()
    }

    //1.1.3 编写一个程序,从命令行得到三个整数参数。如果它们都相等则打印 equal,否则打印 not equal。
    private fun test1_1_3() {
        println("请输入三个整数参数")
        val scanner1 = Scanner(System.`in`)
        val int1 = scanner1.nextInt()
        val scanner2 = Scanner(System.`in`)
        val int2 = scanner2.nextInt()
        val scanner3 = Scanner(System.`in`)
        val int3 = scanner3.nextInt()
        if (int1 == int2 && int1 == int3) {
            println("equal")
        } else {
            println("not equal")
        }
    }

答案

请输入三个整数参数
5
5
5
equal
请输入三个整数参数
5
6
4
not equal

1.1.4 下列语句各有什么问题(如果有的话)?

   a. if (a > b) then c = 0;

   b. if a > b { c = 0; }

   c. if (a > b) c = 0;

   d. if (a > b) c = 0 else b = 0;

答案

a then关键字有问题,java中没有then关键字
b a > b 忘记加括号了
c 正确
d c = 0 忘记加分号,并且没有花括号,b = 0;外没有加花括号

1.1.5 编写一段程序,如果 double 类型的变量 x 和 y 都严格位于 0 和 1 之间则打印 true,否则打印 false

?答案

    @Test
    fun test1_1_5(x: Double, y: Double) {
        if (x > 0 && x < 1 && y > 0 && y < 1) {
            println(true)
        } else {
            println(false)
        }
    }

1.1.6 下面这段程序会打印出什么??

    @Test
    fun test1_1_6() {
        var f = 0
        var g = 1
        for (i in 0..15) {
            println(f)
            f = f + g
            g = f - g
        }
    }

答案

15个循环过程中,值的变化
    //f = 0;g = 1;
    //f = 1;g = 0;
    //f = 1;g = 1;
    //f = 2;g = 1;
    //f = 3;g = 2;
    //f = 5;g = 3;
    //f = 8;g = 5;
    //f = 13;g = 8;
    //f = 21;g = 13;
    //f = 34;g = 21;
    //f = 55;g = 34;
    //f = 89;g = 55;
    //f = 144;g = 89;
    //f = 233;g = 144;
    //f = 377;g = 233;
    //f = 610;g = 377;

打印的是f的值

1.1.7 分别给出以下代码段打印出的值:

a.
        double t = 9.0;
        while (Math.abs(t - 9.0/t) > .001)
            t = (9.0/t + t) / 2.0;
        StdOut.printf("%.5f\n", t);
b.
        int sum = 0;
        for (int i = 1; i < 1000; i++)
            for (int j = 0; j < i; j++)
                sum++;
        StdOut.println(sum);
c.
        int sum = 0;
        for (int i = 1; i < 1000; i *= 2)
            for (int j = 0; j < 1000; j++)
                sum++;
        StdOut.println(sum);

答案


    @Test
    fun test1_1_7() {
        test1_1_7_1()
        test1_1_7_2()
        test1_1_7_3()
    }

    //t=9
    //t=5
    //t=3.4
    //t=3.02352941
    //t=3.02352941
    //t=3.00009
    private fun test1_1_7_1() {
        var t = 9.0
        while (Math.abs(t - 9.0 / t) > .001) t = (9.0 / t + t) / 2.0
        System.out.printf("%.5f\n", t)
    }

    //sum=1+2+3+4+....+998+999
    //sum=(1+999)+(2+998)+....+(499+501)+500
    //sum=1000*499+500=499500
    private fun test1_1_7_2() {
        var sum = 0
        for (i in 1..999) for (j in 0 until i) sum++
        println(sum)
    }

    //i=1,2,4,8,....512,1024 --->即从 2的0次方 到 2的9次方,一共while循环了10次
    //sum=1000*10=10000
    private fun test1_1_7_3() {
        var sum = 0
        var i = 1
        while (i < 1000) {
            for (j in 0..999) sum++
            i *= 2
        }
        println(sum)
    }
3.00009
499500
10000

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 10:04:13  更:2022-05-14 10:05:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 1:25:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码