zoukankan      html  css  js  c++  java
  • 【计算机二级Java语言】卷015

    选择题

    公共知识

    【1】设有一个栈与一个队列的初始状态均为空。现有一个序列A, B, C, D, E, F, G, H, 先分别将序列中的前4个元素依次入栈, 后4个元素依次入队; 然后分别将栈中的元素依次退栈, 再将队列中的元素依次退队。最后得到的序列为()。
    〖A〗A, B, C, D, H, G, F, E
    〖B〗D, C, B, A, H, G, F, E
    〖C〗A, B, C, D, E, F, G, H
    〖D〗D, C, B, A, E, F, G, H
    栈的特点是先进后出, 而队列是先进先出。
    前4个元素依次进栈为ABCD, 出栈后为DCBA, 后4个元素入队列为EFGH, 出队也是EFGH, 最后得到的序列为DCBAEFGH。
    故D项正确。
    【2】设某棵树的度为3, 其中度为2, 1, 0的结点个数分别为3, 4, 15。则该树中总结点数为()。
    〖A〗30
    〖B〗22
    〖C〗35
    〖D〗不可能有这样的树
    在树结构中, 一个结点所拥有的后件个数称为该结点的度, 所有结点中最大的度称为树的度, 树中的结点数即为树中所有结点的度数之和再加1。
    假设度为3的结点数为n, 总结点数为m, m = 3×n + 2×3 + 1×4 + 1, 叶子结点数15 = m - (3 + 4 + n)。
    得m = 3n + 11, 2n = 11, n无法得到整数, 说明不可能存在这样的树。
    故答案为D。
    【3】设二叉树的前序序列为ABDEGHCFIJ, 中序序列为DBGEHACIFJ。则按层次输出(从上到下, 同一层从左到右)的序列为()。
    〖A〗ABCDEFGHIJ
    〖B〗DGHEBIJFCA
    〖C〗JIHGFEDCBA
    〖D〗GHIJDEFBCA
    二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。
    二叉树的前序遍历序列为ABDEGHCFIJ, 中序序列为DBGEHACIFJ, 可知该树A为根结点, 右子树结点为CFIJ, 左子树结点为BDEGH。
    从顶向下从左向右依次为ABCDEFGHIJ, A项正确。
    【4】设顺序表的长度为16, 对该表进行简单插入排序。在最坏情况下需要的比较次数为()。
    〖A〗15
    〖B〗60
    〖C〗30
    〖D〗120
    简单插入排序在最坏情况下, 即初始排序序列是逆序的情况下, 比较次数为n(n - 1) / 2, 移动次数为n(n - 1) / 2。
    本题中即16×(16 - 1)÷2 = 8×15 = 120。
    故答案为D。
    【5】软件系统总体结构图的作用是()。
    〖A〗描述软件系统结构的图形工具
    〖B〗描述软件系统的控制流
    〖C〗描述软件系统的数据流
    〖D〗描述软件系统的数据结构
    软件系统总体结构图是描述软件系统结构的图形工具, 它包括软件系统的控制流、软件系统的数据流、软件系统的数据结构等的概括。
    故答案为A。
    【6】不属于对象构成成份的是()。
    〖A〗属性
    〖B〗规则
    〖C〗方法(或操作)
    〖D〗标识
    一个对象通常可由对象名、属性和操作三部分组成, 对象名唯一标识一个对象。
    故答案为B。
    【7】十进制整数设为整数类I, 则下面属于类I的实例的是()。
    〖A〗-518
    〖B〗0.518
    〖C〗518E - 2
    〖D〗.518
    类是具有共同属性、共同方法的对象的集合。
    -518是整数, 0.518是浮点数, 518E - 2是指数。
    故答案为A。
    【8】结构化程序设计原则强调的是()。
    〖A〗自顶向下
    〖B〗可封装性
    〖C〗可复用性
    〖D〗可恢复性
    结构化程序设计的原则强调自顶向下、逐步求精、模块化、限制使用goto语句。
    故答案为A。
    【9】违背数据流图(DFD)构造规则的是()。
    〖A〗"加工"应既有输入又有输出
    〖B〗"数据存储"间有数据流
    〖C〗"数据流"应标识数据流名
    〖D〗图子图是指相邻上下两层的数据流图
    数据流图应遵循以下构造规则和注意事项:①对加工处理建立唯一、层次性的编号, 且每个加工处理通常要求既有输入又有输出。

    ②数据存储之间不应有数据流。

    ③数据流图的一致性。
    即输入输出、读写的对应。

    ④父图、子图关系与平衡规则。
    相邻两层DFD之间具有父子关系, 子图代表了父图中某个加式的详细描述, 父图表示了子图间的接口。
    子图个数不大于父图中的处理个数。
    所有子图的输入输出数据流和父图中相应处理的输入输出数据流必须一致。
    故答案为B。

    【10】规范化主要为克服数据库逻辑结构中的插入异常, 删除异常以及()。
    〖A〗数据丢失的问题
    〖B〗结构不合理的问题
    〖C〗数据不一致的问题
    〖D〗冗余度大的问题
    关系数据库进行规范化的目的是使结构更合理, 消除存储异常, 使数据冗余尽量小, 便于插入、删除和更新。
    关系模式进行规范化的原则:遵从概念单一化"一事一地"原则, 即一个关系模式描述一个实体或实体间的一种联系。
    规范的实质就是概念的单一化。
    故答案为D。

    专业知识

    【11】下列对Java语言的描述中, 正确的是
    〖A〗Java类是对具有相同行为对象的一种抽象
    〖B〗Java类的构造方法可以带有返回值
    〖C〗Java中构造方法不可以重载
    〖D〗Java的垃圾回收机制是由用户定义线程完成的
    选项B:构造方法没有返回值, 且不能写void, 错误; 选项C:构造方法可以进行重载, 有参构造函数和无参构造函数就是重载, 错误; 选项D:垃圾回收机制是系统级的线程, 错误; 选项A正确, 本题答案为A。
    【12】下列选项中, 属于Java文档注释的是
    〖A〗/The get method of the class Counter
    〖B〗//The get method of the class Counter
    〖C〗/*The get method of the class Counter*/
    〖D〗/**The get method of the class Counter*/
    选项A没有这种注释, 错误; 选项B属于单行注释, 错误; 选项C属于多行注释, 错误; 选项D正确, 本题答案为D。
    【13】下列选项中, 不符合Java标识符规定的是
    〖A〗1_name
    〖B〗abc123
    〖C〗total
    〖D〗_width
    java命名规则:1可以由字母, 数字, "_"或者"$"符组成, 但是不能以数字开头; 2.中文可以作为变量名, 但是不提倡使用; 3.Java大小写敏感, 严格区分大小写, 命名时需要注意; 4.不能使用Java保留字; 选项A不符合命名规则, 本题答案为A。
    【14】下列代码段执行后, t的值为
    int a = 6, b = 9, c = 3, t = 0;
    t = a > b ? (a > c ? a : c) : (b > c ? b : c);
    
    〖A〗0
    〖B〗3
    〖C〗6
    〖D〗9
    本题考查条件运算符的应用, 关系表达式?表达式1:表达式2; 关系表达式返回true, 结果为表达式1的值, 否则为表达式2的值。
    将程序中的带入可知结果为9, 选项D正确, 本题答案为D。
    【15】使表达式 x > 0 && x <= 10 || x > 100的值为false的选项是
    〖A〗x = 5
    〖B〗x = 10
    〖C〗x = 20
    〖D〗x = 150
    值为false首先需要满足x < 100, 其次x < 0或者x > 10, 选项C正确, 本题答案为C。
    【16】下列选项中, 不能正确表示无限循环的是
    〖A〗while (true) { }
    〖B〗while (1) { }
    〖C〗while ( !false) { }
    〖D〗for (; true; ) { }
    while循环中的条件应为布尔表达式, 选项B无法判断对错, 写法错误, 本题答案为B。
    【17】switch语句的格式为 switch (表达式) { }, 其表达式的类型不允许是
    〖A〗int
    〖B〗char
    〖C〗double
    〖D〗byte
    switch语句在数据类型上受到限制, 只能使用int、byte、short、char类型。
    如果比较的数据类型是float型或者boolean类型, 就只能使用if - else if结构。
    本题答案为C
    【18】下列代码段执行后, s的值为
    int s = 0;
    for (int i = 1; i <= 8; i++) {
        if (i % 2 == 0)
            continue;
        s = s + i;
    }
    
    〖A〗1
    〖B〗16
    〖C〗20
    〖D〗36
    本题考查continue, 当满足条件时, 跳出本次循环, 执行下次循环。
    所以计算的过程是1 + 3 + 5 + 7 = 16, 选项B正确。
    本题答案为B。
    【19】下列代码段执行后, n的值为
    int n = 0;
    for (int i = 1; i <= 3; i++) {
        n = 0;
        for (int j = 1; j <= 2 * i - 1; j++)
            n++;
    }
    
    〖A〗3
    〖B〗5
    〖C〗9
    〖D〗15
    因为大循环中每次循环n都被初始化为0, 所以只需看最后一次执行i = 3结果。
    执行结果为5, 选项B正确, 本题答案为B。
    【20】下列代码段执行后的结果是
    int[] a = { 1, 2, 3, 4, 5 };
    for (int i = 0; i < 5; i++)
        a[i] = a[(i + 1) % 5];
    for (int i = 0; i < 5; i++)
        System.out.print(a[i] + " ");
    
    〖A〗2 3 4 5 1
    〖B〗2 3 4 5 2
    〖C〗4 5 3 2 1
    〖D〗1 2 3 4 5
    i = 0时, (i + 1) % 5 = 1, a[0] = 2; i = 1时, (i + 1) % 5 = 2, a[1] = 3; …

    i = 4时, (i + 1) % 5 = 0, a[0] = 2;
    此时a[0]已经被改变为2

    本题答案为B。

    【21】Java中, 定义子类继承父类用到的关键字是
    〖A〗extends
    〖B〗this
    〖C〗inheritance
    〖D〗final
    B : this关键字主要有三个应用:(1)this调用本类中的属性, 也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法, 调用时要放在构造方法的首行

    C:英文单词继承意思, 和Java无关

    D:可以声明成员变量、方法、类以及本地变量。
    一旦你将引用声明作final, 你将不能改变这个引用了, 编译器会检查代码, 如果你试图将变量再次初始化的话, 编译器会报编译错误。

    选项A正确, 本题答案为A。

    【22】定义接口的关键字是
    〖A〗public
    〖B〗private
    〖C〗interface
    〖D〗final
    选项ABD主要用来修饰成员变量和类, 定义接口用关键字interface, 选项C正确, 本题答案为C。
    【23】下列语句执行后, i的值为
    String str = "rock-n-roll";
    String str1 = "ro";
    int i = str.indexOf(str1);
    
    〖A〗0
    〖B〗1
    〖C〗7
    〖D〗8
    Java中字符串中子串的查找共有四种方法, 如下:1、int indexOf(String str):返回第一次出现的指定子字符串在此字符串中的索引。

    2、int indexOf(String str, int startIndex):从指定的索引处开始, 返回第一次出现的指定子字符串在此字符串中的索引。

    3、int lastIndexOf(String str):返回在此字符串中最右边出现的指定子字符串的索引。

    4、int lastIndexOf(String str, int startIndex):从指定的索引处开始向后搜索, 返回在此字符串中最后一次出现的指定子字符串的索引。

    由此可知选项A正确, 本题答案为A。

    【24】如果要判断两个字符串a 和b是否相等(不区分大小写)应该选用的方法是
    〖A〗a.equals(b)
    〖B〗a = b
    〖C〗a == b
    〖D〗a.equalsIgnoreCase(b)
    选项A : equals比较区分大小写选项B:赋值语句 选项C:用于数值比较, 选项D比较字符串不区分大小写, 符合题目要求, 本题答案为D。
    【25】下列程序段的运行结果是
    int[][] a = new int[4][4];
    int i, j, s = 0;
    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++)
            a[i][j] = i * j;
    for (i = 0; i < 4; i++)
        s = s + a[i][i];
    System.out.print(s);
    
    〖A〗30
    〖B〗14
    〖C〗55
    〖D〗60
    本题考查二维数组的运算, 双层for循环中的执行结果为4行4列的矩阵, 带入相关值, 可知a[0][0]为0, a[1][1]为1, a[2][2]为4, a[3][3]位9, 可知最终结果为14, 选项B正确, 本题答案为B。
    【26】整数算术运算中, 当除数为0时产生的异常是
    〖A〗ArrayIndexOutOfBoundsException
    〖B〗DividedByZeroException
    〖C〗NullPointerException
    〖D〗ArithmeticException
    A:数组下标越界, B:被除数为0, C:空指针异常, 本题答案为D。
    【27】执行下列程序段时, 若文件"file.dat"不存在, 则输出结果是
    try {
        FileInputStream fis = new FileInputStream("file.dat");
    } catch (FileNotFoundException e) {
        System.out.print("FileNotFoundException")
    } catch (IOException e) {
        System.out.print("IOException")
    }
    
    〖A〗FileNotFoundException
    〖B〗IOException
    〖C〗FileNotFoundException IOException
    〖D〗
    在处理异常时遵循:先逮小的(先处理小范围中的异常), 再逮大的(小范围没有处理异常的操作, 往其父类中查找解决异常), 本程序中文件找不到, 有FileNotFoundException这个处理异常, 则后面的异常不会被执行, 选项A正确, 本题答案为A。
    【28】Map接口中, 插入<关键字, 值>条目的方法是
    〖A〗get()
    〖B〗put()
    〖C〗add()
    〖D〗insert()
    选项A:通过key, 取得value值, 错误, 选项CD Map中无此方法, 选项B正确, 本题答案为B。
    【29】压缩流所在的包是
    〖A〗java.util.zip
    〖B〗java.sound.sampled
    〖C〗javax.imageio
    〖D〗javax.xml.stream
    选项A:实现zip压缩和解压, 选项 B:音频播放, 选项C:简单的图像操作, 选项D:解压xml文件, 本题答案为A
    【30】将一个字节数组作为输出流写入内存的类是
    〖A〗StringBufferInputStream
    〖B〗PipedInputStream
    〖C〗ByteArrayOutputStream
    〖D〗ObjectOutputStream
    A:允许应用程序创建, 其中读取的字节由字符串的内容提供的输入流B:管道流可以实现两个线程之间, 二进制数据的传输D:数据模型序列化

    本题答案为C。

    【31】创建文件目录时, 所使用的方法是
    〖A〗list()
    〖B〗mkdirs()
    〖C〗mkdir()
    〖D〗isFile()
    本题考查文件类提供的方法。
    mkdir0是为目录操作提供的方法, 用来创建目录; mkdirs()也是为目录操作提供的方法, 创建包含父目录的目录; list()是对文件名操作提供的方法, 返回一个字符串数组, 为该文件所在目录下的所有文件名列表, isFile()判断一个文件是否属于标准的目录。
    本题答案为C。
    【32】下列代码实现了将一个文件的内容复制到另一个文件的功能。下划线处应填入的代码是
    import java.io.*;
    public class test {
        public static void main(String[] args) {
            try {
                FileInputStream is = new FileInputStream("D:\from.txt");
                FileOutputStream os = new _______________("D:\to.txt");
                byte[] str = new ___________[1024];
                while (is.available() > 0) {
                    is.read(str, 0, 1024);
                    os.write(str);
                }
                is.close();
                os.close();
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    〖A〗FileOutputStream, byte
    〖B〗FileInputStream, byte
    〖C〗FileOutputStream, str
    〖D〗FileInputStream, str
    文件输出流, 是用于将数据写入File或 FileDescriptor的输出流, 使用给定的 charset 将此 String 编码到 byte 序列, 并将结果存储到新的 byte 数组 选项A正确, 本题答案为A。
    【33】文本字段或文本区域发生改变时所产生的事件是
    〖A〗MouseEvent
    〖B〗WindowEvent
    〖C〗FocusEvent
    〖D〗TextEvent
    A:鼠标点击事件, B:窗口事件, C:当页面中的元素获得或失去焦点时触发, 选项D正确, 本题答案为D。
    【34】Swing组件的事件类所在的包是
    〖A〗javax.swing.tree
    〖B〗javax.swing.event
    〖C〗javax.swing.table
    〖D〗javax.swing.border
    Swing组件的事件类所在的包是javax.swing.event
    【35】有如下程序
    <img border = "0" alt = "" src = "http://res.weilaijiaoyu.cn/CourseFile/JAVA/PC/Images/ja-15-1.png">
    
    〖A〗JOptionPane.showMessageDialog(null, "错误", "运行结果", JOptionPane.ERROR_MESSAGE);
    〖B〗JOptionPane.showMessageDialog(null, "错误", "运行结果", JOptionPane.PLAIN_MESSAGE);
    〖C〗JOptionPane.showMessageDialog(null, "错误", "运行结果", JOptionPane.WARNING_MESSAGE);
    〖D〗JOptionPane.showMessageDialog(null, "错误", "运行结果", JOptionPane.INFORMATION_MESSAGE);
    A错误提示框 B:基本提示框C:警告D:选择 本题答案为B。
    【36】下列选项中, 不是Java线程组成部分的是
    〖A〗代码
    〖B〗虚拟的CPU
    〖C〗所属的进程
    〖D〗代码所操作的数据
    线程是程序中的一个执行流。
    一个执行流是由CPU运行程序的代码、操纵程序的数据所形成的。
    Java中的线程模型包含3部分:一个虚拟的CPU, 该CPU执行的代码, 代码所操作的数据。
    选项C不属于组成部分, 本题答案为C。
    【37】为了使下列程序正常运行并且输出"(1,1) (2,2) (3,3) ", 在下划线处应填入的是
    public class Test2 ___________ {
        private int x = 0;
        private int y = 0;
        boolean flag = true;
        public static void main(String[] args) {
            Thread t1 = new ________;
            t1.start();
        }
        public void run() {
            while (flag) {
                x++;
                y++;
                System.out.print("(" + x + "," + y + ") ");
                if (x >= 3)
                    flag = false;
            }
        }
    }
    
    〖A〗implements Runnable, Test2()
    〖B〗implements Runnable, Thread()
    〖C〗extends Thread, Test2()
    〖D〗extends Thread, Thread()
    Thread类是多线程基类, 多线程启动类必须继承此类。
    而实现Runnable接口的类能作为多线程的一个执行任务, 一般作为参数传给新的Thread类。
    选项C正确, 本题答案为C。
    【38】在一个线程的生命周期中, 不能多次被调用的方法是
    〖A〗wait()
    〖B〗start()
    〖C〗sleep()
    〖D〗yield()
    启动线程start()只能调用一次, 选项B正确, 本题答案为B。
    【39】下列选项中, 属于Applet生命周期方法的是
    〖A〗init(), start(), stop(), destroy()
    〖B〗init(), start(), paint(), destroy()
    〖C〗start(), stop(), paint(), main()
    〖D〗main(), init(), stop(), start()
    init:该方法用于初始化Applet, 当applet首先被加载时, 该方法会自动被调用一次。

    start:该方法在Java调用init方法之后被调用, 当用户从其他页面返回到包含Applet的页面中时, 该方法也会被调用, 它与init方法不同。
    有鉴于此, 应该把调用一次的代码放到init方法中, 而非start方法中。
    start方法通常是为Applet重起一个线程的地方, 如果当用户回到当前网页的时候不需要做任何操作, 那么就不需要实现此方法。

    stop:该方法在用户离开Applet页面时, 被自动调用。
    因此, 其也能被多次重复调用。
    主要作用是当用户不再关注Applet时能够停止一些没用的动作。
    典型作用是挂起一个线程。

    destroy:当浏览器被正常关闭时, JVM会自动调用此方法。
    该方法中放置的代码主要是用来回收一些系统资源

    本题答案为A。

    【40】下列代码包括一个HTML文件和一个定义Applet类的Java程序。为了使HTML文件在浏览器中运行时显示一个带有"Try!"的按钮, 在下划线处应填入的代码是
    /*test.html*/
    <HTML><HEAD><TITLE > Applet Test</TITLE></HEAD><BODY><_______ CODE = "AppletTest3.class" WIDTH = 150 HEIGHT = 25></_______></BODY></HTML>/*AppletTest3.java*/
    import java.awt.*;
    import __________;
    public class AppletTest3 extends JApplet {
        JButton b;
        public void init() {
            Container contentPane = getContentPane();
            b = new JButton("Try!");
            contentPane.add(b);
        }
    }
    
    〖A〗FONT, FONT, javax.swing.*
    〖B〗BR, BR, java.awt.event.*
    〖C〗APPLET, APPLET, java.awt.event.*
    〖D〗APPLET, APPLET, javax.swing.*
    JApplet类属于Applet的扩展类, java中扩展类都存放在javax包中, JApplet属于swing窗口中的构件, 选项B, C错误, 在浏览器中通过获取java中的参数, 选项D正确, B错误, 本题答案为D。

    编程题

    【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
    本题的要求是:
    对 Java_1.java文件进行调试, 使程序输出结果如下:
    0 1 2 3 4 5 6 7 8 9
    1.int 2.i++3.anArray[i]
    
    本题考查考生对数组的应用
    填空1 : anArray位int类型数组, 在确定大小时也必须为int类型
    填空2:往数组中添加元素, 程序要求在前一个值的基础上+1, 所以条件应为i++
    填空3:将数组中的每一个元素输出, 通过下标的方式进行
    【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
    本题的要求是:
    构造一个5行5列的二维数组, 给数组赋值, 并将其按照行列对齐的方式输出, 使程序输出结果如下:
    0 0 0 0 1
    0 0 0 2 3
    0 0 4 5 6
    0 7 8 9 10
    11 12 13 14 15
    1.j < 5 2.4 3.a[i][j] = k++4.10
    
    本题考查考生对象二维数组的赋值和输出, 采用循环赋值输出。
    填空1:数组有5行5列就没有赋值, 因此j的循环结束条件和i一样<5
    填空2:数组输出结果为第一行, 第一列前4个数都是0, 所以a[i][j] = 0, 不能超出4个
    填空3:对于对角线后的语句由于是从1递增到15, 所以要借助k的自增
    填空4:程序输出的结果中对角线有10个非0的数, 所以a[i][j]应<10
    【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
    本题的要求是:
    运行程序时, 生成下面左边图形的界面, 第一次点击图中的"New"按钮时, 弹出如下右图
    所示的对话框。之后再点击"New"按钮时, 弹出对话框标题中数字将发生改变。

    1.panel 2.setVisible(false) 3.closeAllListener 4.counter
    
    本题考查的考生对窗口构件及监听器的掌握
    填空1:创建好画板对象之后需要将其加入到窗口容器中, 此处将panel添加到容器中去
    填空2 : JFrame窗口隐藏或消除的方法是setVisible(false).需将其布尔参数设置为false
    填空3:点击colseAll按钮触发事件, 将所有弹窗删除, 需将监听器添加到按钮事件中去
    填空4:每新建一个窗口, 窗口的编号在前面的基础上+1, counter在此做计数操作
  • 相关阅读:
    Java上等价类划分测试的实现
    软件测试の因果图法的测试运用
    display: block; 和 display: inline; 的区别
    CSS实现垂直居中
    CSS中实现水平居中
    HTTP头部信息
    HTTP PUT方法和POST方法的区别
    理解 ajax xhr jsonp
    深入理解JavaScript系列
    Angular 1.x 指令笔记
  • 原文地址:https://www.cnblogs.com/mjios/p/12455894.html
Copyright © 2011-2022 走看看