原创 破java,就这破玩意还要考试?

2009-7-16 00:46 3363 8 8 分类: 工程师职场


 就这破玩意还要人家背,无语。。。



一、单项选择



1.关于Java选择结构下列哪个说法正确?(      )



A.      
if语句和else语句必须成对出现



B.      
if语句可以没有else语句



C.     
switch结构中每个case语句中必须用break语句



D.     
switch结构中必须有default语句



2.while循环和do…while循环的区别是:(      )



A.      
没有区别,这两个结构任何情况下效果一样



B.      
while循环比do…while循环执行效率高



C.     
while循环是先循环后判断,所以循环体至少被执行一次



D.     
do…while循环是先循环后判断,所以循环体至少被执行一次



3.下列说法哪个是正确的?(      )



A.      
程序执行到break语句时一定会结束所有的循环



B.      
程序执行到continue语句时会结束当前循环



C.     
break语句和continue语句都可以和标签协同使用



D.     
continue语句和break语句的作用相同



4.方法内的变量:(      )



A.      
一定在方法内所在有位置可见



B.      
可能在方法内的局部可见



C.     
可以在方法外可见



D.     
方法外也可用



5.void的含义:(      )



       A.   方法体为空               B.   方法没有返回值



       C.   没有意义                   D.   定义方法时必须使用



6.throws的作用:(      )



       A.   没有意义                   B.   表示后面是方法的输出值



C.     
表示方法可能会抛出例外



D.     
方法的标志,每个方法都必须有



7.下列说法哪个正确?(      )



A.      
不需要定义类,就能创建对象



B.      
对象中必须有属性和方法



C.     
属性必须是简单变量



D.     
属性可以是简单变量,也可以是一个对象



8.下列说法哪个正确?(      )



A.      
一个程序可以包含多个源文件



B.      
一个源文件中只能有一个类



C.     
一个源文件中可以有多个公共类



D.     
一个源文件只能供一个程序使用



9.被声明为private,protectedpublic的类成员,在类外部:(      )



A.      
只能访问声明为public的成员



B.      
只可能访问到声明为protectedpublic的成员



C.     
都可以访问



D.     
都不能访问



10.抽象方法:(      )



A.      
可以有方法体



B.      
可以出现在非抽象类中



C.     
是没有方法体的方法



D.     
抽象类中的方法都是抽象方法



11.关于类中类的说法哪个正确?(      )



A.      
类中类不能使用上层类的私有属性和方法



B.      
类中类可以广泛使用,不受任何限制



C.     
类中类可以单独编译



D.     
类中类可以使用上层类的私有属性和方法



12.下列说法哪个正确?(      )



A.      
Java中允许一个子类有多个父类



B.      
某个类是一个类的子类,它仍有可能成为另一个类的父类



C.     
一个父类只能有一个子类



D.     
继承关系最多不能超来4



13.在调用构造函数时:(      )



A.      
子类可以不加定义就使用父类的所有构造函数



B.      
不管类中是否定义了何种构造函数,创建对象时都可以使用默认构造函数



C.     
先调用父类的构造函数



D.     
先调用形参多的构造函数



14.thissuper(     
)



A.      
都可以在main()方法中



B.      
都是指一个内存地址



C.     
不能用在main()方法中



D.     
意义相同



15.关于抽象类哪个正确?(      )



A.      
抽象类中不可以有非抽象方法



B.      
某个非抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法



C.     
绝对不能用抽象类去创建对象



D.     
接囗和抽象类是同一回事



16.如果一个程序段中有多个catch,程序会:(      )



A.      
每个catch都执行一次



B.      
把每个符合条件的catch都执行一次



C.     
找到适合的例外类型后就不再执行其他catch



D.     
找到适合的例外类型后继续执行后面的catch



17.下面关于例外控制器排序说法正确的是:(      )



A.      
应先捕捉父类例外,再捕捉子类例外



B.      
应先捕捉子类例外,再捕捉父类例外



C.     
有继承关系的例外不能在同一try块的控制器中使用



D.     
如果先匹配到父类例外,后面的子类例外仍然可以被匹配到



18.下列关于finally说法正确的是:(      )



A.      
finally语句应该放在所有例外控制器的最前面



B.      
如果程序在前面的例外控制器中匹配了合适例外,就不再执行finally语句了



C.     
无论程序是否找到合适的例外控制器,都会去执行finally语句



如果程序在前面的例外控制器中匹配到了多个合适的例外,就不再执行finally语句了



19.如果程序逻辑要求在很多情况下输出一个固定的提示信息,下列说法正确的是:(      )



A.      
使用StringStringBuffer都可以



B.      
使用StringStringBuffer,程序的执行效率一样



C.     
使用StringBuffer效率比较高



D.     
以上都不对



20.Vector类对象中的元素可以是:(      )



A.      
int型整数           B.   浮点数



C.    对象                     D.   属性



21.如果程序逻辑要求对集合中的元素需要经常进行查找定位,应该使用哪些组件来实现?(      )



              A.   Vector          B.   Hashtable



              C.   Iterator         D.   Map



22.Character流与Byte流的区别在于:(     
)



A.      
每次读入的字节数不同



B.      
前者带有缓冲,后者没有



C.     
前者是块读写,后者是字节读写



D.     
二者没有区别,可以互相使用



23.为了实现多线程程序中线程间通讯,需要使用的流是:(      )



A.      
File stream



B.      
Piped stream



C.     
Random access stream



D.     
Filter stream



24.用最简单的代码输出某个文件内容,最好采用:(      )



A.      
File stream



B.      
Piped stream



C.     
Random access stream



D.     
Filter stream



25.下列属于图形用户界面元素的有:(      )



              A.   Applet                 B.   窗口



              C.   按钮                    C.   线程



26.每个作用Swing组件的程序都必须至少有一个:(      )



              A.   按钮                    B.   顶层容器



              C.   标签                    D.  菜单



27.监听事件和处理事件:(      )



A.      
都由Listener完成



B.      
都由在相应事件Listener处登记过的组件完成



C.     
Listener和组件分别完成



D.     
Listener和窗口分别完成



28.进程是指:(      )



              A.   一段程序                   B.   正在运行的程序



              C.   一个.java文件          D.   一个.class文件



29.JSP中引用其他Java包,应该使用指令:(      )



              A       import                        B.   include



              C.   page                          D.   package



30.关于forward动作的说法正确的有:(      )



A.      
forward动作跳转到的页面执行完毕后,程序将返回到原来的页面



B.      
无论跳转到什么页面都可以传递参数过去



C.     
forward以下的代码将不能执行



D.     
不能直接利用forward动作本身向跳转的页面传递参数



31.下列说法正确的是:(      )



A.      
只要.class文件放在同一个目录下,引用其他类不需要做任何说明



B.      
要引用同目录下的其他.class文件,必须在classpath变量中设置该路径



C.     
在一个类中引用其他自定义类,必须将两个类定义放在一个.java文件中



D.     
引用不同目录下的类,只要在classpath变量中设置好该路径即可



32.通过如下语句定义的StringBuffer,其length()方法与capacity()方法的返回值分别为:(      )



StringBuffer
greeting=new StringBuffer(50);



String    a=”Happy    new       Year”;



greeting.append(a);



       A.   15,15                         B.   15,50



       C.   50,15                         D.   50,50



33.BitSot的最小长度是:(      )



       A.   8                            B.   16



       C.   32                          D.   64



34.如果要读取一个大文件的末尾的一段内容,并且知道该段落的确切位置,最方便的流是:(      )



       A.   File stream                              B.   Piped    stream



       C.   Random      access stream        D.   Filter stream



Partial Answers:



20.C      21.B      22.A      23.B      24.A 
25.C   26.B 
27.B     
28.B   29.C 30.C    31.A      32.B      33.D       34.C



 



二、多项选择



1.面向过程程序设计的核心是:(           )



       A.   商业逻辑                   B.    客观实体



       C.   算法                           D.   要解决的问题



2.符合对象和类关系的是:(           )



       A.   人和老虎                   B.    书和汽车



       C.   楼和建筑物               D.   汽车和交通工具



3.下列哪些是指线程的状态?(           )



              A.   Runnable                     B.    Dead



              C.   new Thread        D.   Non      
Runnable



4.网络应用的3层结构指哪些层?(          
)



              A.   Web                       B.    用户层



              C.   业务层                       D.   数据层



5.J2EE组件有:(           )



              A.   Servlet                         B.    Java       Beans



              C.   AWT                           D.   EJB



6.记录页面访问历史事件可以使用的方法有:(          
)



              A.   使用cookie                B.    改写URL



              C.   使用session               D.   使用表单隐藏



 



Partial Answers:



3.ABC    4.ACD  5.ABD   6.AB



 



三、请说出以下程序的作用:



abstract class SuperAbstract{



       void
a(){



System.out.println("Defined
method a() in SuperAbstract.");



       }



       abstract
void b();



       abstract
int c(int i);



}



 



interface AsSuper{



       void
x();



       void
y();



}



abstract class SubAbstract extends SuperAbstract
implements AsSuper{



       public
void b(){



System.out.println("In
SubAbstract,implements method b() from SuperAbstract.");



       }



       abstract
String f();



       abstract
void g();



}



 



public class InheritAbstract extends SubAbstract{



       public
void x(){



System.out.println("In
mainclass,must implement method x() from interface!");



       }



       public
void y(){



System.out.println("In
mainclass,must implement method y() from interface!");



       }



       public
int c(int i){



System.out.println(i+"in
mainclass,implement method c() from SuperAbstract.");



              return
i;



       }



       public
String f(){



return
"In mainclass,implemented method f() from SubAbstract.";



              }



       public
void g(){



System.out.println("In
mainclass,implemented method g() from SubAbstract.");



       }



       public
static void main(String args[]){



              InheritAbstract
instance=new InheritAbstract();



              System.out.println(instance.f());



              instance.g();



 



              instance.a();



              instance.b();



              instance.c(1314520);



 



              instance.x();



              instance.y();



       }



}



 



四、试说出以下程序的功能:



class Account1 { 



    private String name;



    private int value;



    void put(int i) {



        value = value + i;          



    }



    int get(int i){ 



        if (value>i)



            value = value - i;            



        else                              



        {



            i = value;



            value = 0;                    



        }



        return i;                     



    }



    int howmatch(){ 



        return value;                     



    }



}



class  Save2 extends Thread{



    private Account1 a1;



    private int amount;



    public Save2(Account1 a1,int amount){



        this.a1 = a1;



        this.amount = amount;



    }



    public void run(){



        synchronized (a1){     



            int k = a1.howmatch();



            try{



                sleep(1);                



            } catch(InterruptedException e){



                System.out.println(e);



            }



            a1.put(amount);



  System.out.println("现有"+k+", 存入"+amount+", 余额"+a1.howmatch());



        }



    }



    public static void main (String args[]){



        Account1 a1 = new Account1();



        (new Save2(a1,100)).start();



        (new Save2(a1,200)).start();



        (new Fetch2(a1,500)).start();



    }



}



class
Fetch2 extends Thread{               



    private Account1 a1;



    private int amount;



    public Fetch2(Account1 a1,int amount){



        this.a1 = a1 ;



        this.amount = amount;



    }



    public void run(){



        synchronized (a1){                



            int k = a1.howmatch();



            try{



                sleep(1);                 



            } catch(InterruptedException e){



                System.out.println(e);



            }



            System.out.println("现有"+k+", 取走"+a1.get(amount)+ ", 余额"+a1.howmatch());



        }



    }



}



 



五、编程



有下面一段Server段程序,目的是能够同时服务多个客户,客户的请求是一句话(一个 String)。如果这个请求的内容是字符串"plain"的话,服务器仅将"hello"字符串返回给用户。否则将用户的话追加到当前目录的文本文件 Memo.txt中(路径为"Memo.txt"),并向用户返回"OK"。注意Server并发的处理多用户,Memo.txt被共享,要求不能出现数 据不一致。



Server的程序如下文件Server.java:

   public class Server{

    public static void main(String args[]){

     MemoController memoController = new
MemoController();

     try{

       ServerSocket ss = new ServerSocket(1999);

        while (true){

         Socket s = ss.accept();

         try{

           UserThread t = new UserThread(s,
memoController);

           t.start();

           }catch(Exception e){

            e.printStackTrace();

           }

         }

        }catch(Exception e){

          e.printStackTrace();

        }finally{

          memoController.close();

        }

      }

    }



UserThread程序如下:



文件UserThread.java

public class UserThread extends Thread{

  Socket s;

 MemoController memo;

 public UserThread (Socket s, MemoController memo){

     this.s = s;

     this.memo = memo;

 }

 public void run(){

  try{

     
BufferedReader br = new BufferedReader(new



                   InputStreamReader(s.getInputStream()));



     PrintWriter pw = new PrintWriter(new



OutputStreamWriter(s.getOutputStream()));



String
req = br.readLine();

    if (req.equals("plain")){

      pw.println("hello");

    }else{

        memo.append(req);

        pw.println("OK");

       }

       pw.flush();

       pw.close();

       br.close();

       s.close();

     }catch(Exception e){

      e.printStackTrace();

     }

    }

   }



请根据题目的要求和现有的Server.java, UserThread.java的程序完成类MemoController.java的程序。



 



Reference 
Answer:



import java.io.*;

public class MemoController

{

    FileOutputStream
fos;

    OutputStreamWriter
osw;

    BufferedWriter
bw;



    public
MemoController()

    {

       try

       {

           fos = new
FileOutputStream("memo.txt",
true);

           osw = new
OutputStreamWriter(fos);

           bw = new
BufferedWriter(osw);

       }

       catch
(FileNotFoundException e) { };

    }



    public
synchronized void
append(String s)

    {

       try

       {

           bw.write(s, 0, s.length());

           bw.flush();

           bw.close();

           osw.close();

           fos.close();

       }

       catch
(IOException e) { }

    }



    public
static void
main(String args[])

    {

       MemoController
mmc = new MemoController();

       mmc.append("I
am xubin "
);

    }

}



 



六、试说出以下程序的功能:



import java.sql.*;



import javax.swing.*;



class jdbcExample1



{



    public
static void
main(String args[])



    {



       try



       {



           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");



           String
url = "jdbc:odbc:studyDSN";



           String
login = "sa";



           String
password = "";



           Connection
conn =



               DriverManager.getConnection(url,
login, password);



           Statement
statement = conn.createStatement();



           String
sqlQuery = "select * from course";



           ResultSet
rs = statement.executeQuery(sqlQuery);



           while
(rs.next())



           {



              System.out.print(rs.getString(1) + "
,"
);



              System.out.print(rs.getString(2) + ",");



              System.out.println(rs.getInt(3));



           }



           statement.close();



           conn.close();



       }



       catch
(SQLException sqlException)



       {



           JOptionPane.showMessageDialog(null, sqlException.getMessage(),



             "Database
Error"
, JOptionPane.ERROR_MESSAGE);



           System.exit(1);



       }



       catch
(ClassNotFoundException classNotFound)



       {



           JOptionPane.showMessageDialog(null, classNotFound.getMessage(),



              "Driver Not
Found"
, JOptionPane.ERROR_MESSAGE);



           System.exit(1);



       }



    }



}



 



 



七、试说出以下程序的功能:



//WageCalculator application



//by Yongjie Wang



import java.awt.*;



import java.awt.event.*;



import javax.swing.*;



import java.text.*;



 



public class WageCalculator extends
JFrame



{



    //
JLabel and JTextField for  hours



    private
JLabel hoursJLabel;



    private
JTextField hoursJTextField;



 



    //
JLabel and JTextField for overtime worked in a week



    private
JLabel overtimeJLabel;



    private
JTextField overtimeJTextField;



 



    //
JLabel and JTextField for gross wages



    private
JLabel grossWagesJLabel;



    private
JTextField grossWagesJTextField;



 



    //
ButtonGroup to control manager,subManager, cashier and cleaner JRadioButtons



    private
ButtonGroup choiceButtonGroup;



 



    //
JRadioButtons to choose manager,subManager, cashier and cleaner



    private
JRadioButton managerJRadioButton;



    private
JRadioButton subManagerJRadioButton;



    private
JRadioButton cashierJRadioButton;



    private
JRadioButton cleanerJRadioButton;



 



 



 



    //
JButton to initiate wage calculation



    private
JButton calculateJButton;



 



    //
no-argument constructor



    public
WageCalculator()



    {



       createUserInterface();



    }



 



    //
create and position GUI components; register event handlers



    public
void createUserInterface()



    {



       //
get content pane for attaching GUI components



        Container contentPane = getContentPane();



 



       //
enable explicit positioning of GUI components



       contentPane.setLayout(null);



 



       //
set up hoursJLabel



       hoursJLabel = new JLabel();



       hoursJLabel.setBounds(16, 20,
90, 25);



       hoursJLabel.setText("Hours:");



        contentPane.add(hoursJLabel);



 



       //
set up hoursJTextField



       hoursJTextField = new JTextField();



       hoursJTextField.setBounds(120,
20, 90, 25);



       hoursJTextField.setHorizontalAlignment(



          JTextField.RIGHT);



       contentPane.add(hoursJTextField);



 



       //
set up overtimeJLabel



       overtimeJLabel = new JLabel();



       overtimeJLabel.setBounds(16,
75, 90, 25);



       overtimeJLabel.setText("Overtime:");



       contentPane.add(overtimeJLabel);



 



       //
set up overtimeJTextField



       overtimeJTextField = new JTextField();



       overtimeJTextField.setBounds(120,
75, 90, 25);



       overtimeJTextField.setHorizontalAlignment(



          JTextField.RIGHT);



       contentPane.add(overtimeJTextField);



 



       //
set up choiceButtonGroup



       choiceButtonGroup = new ButtonGroup();



 



       //
set up managerJRadioButton



       managerJRadioButton = new JRadioButton();



       managerJRadioButton.setBounds(210,
16, 160, 30);



       managerJRadioButton.setText("Manager");



       managerJRadioButton.setSelected(true);



       choiceButtonGroup.add(managerJRadioButton);



       contentPane.add(managerJRadioButton);



 



       //
set up subManagerJRadioButton



       subManagerJRadioButton = new JRadioButton();



       subManagerJRadioButton.setBounds(210,
45, 170, 23);



       subManagerJRadioButton.setText("Submanager");



       choiceButtonGroup.add(subManagerJRadioButton);



       contentPane.add(subManagerJRadioButton);



 



       //
set up cashierJRadioButton



       cashierJRadioButton = new JRadioButton();



       cashierJRadioButton.setBounds(210,
70, 160, 23);



       cashierJRadioButton.setText("cashier");



       cashierJRadioButton.setSelected(true);



       choiceButtonGroup.add(cashierJRadioButton);



       contentPane.add(cashierJRadioButton);



 



       //
set up cleanerJRadioButton



       cleanerJRadioButton = new JRadioButton();



       cleanerJRadioButton.setBounds(210,
100, 160, 23);



       cleanerJRadioButton.setText("cleaner");



       cleanerJRadioButton.setSelected(true);



       choiceButtonGroup.add(cleanerJRadioButton);



       contentPane.add(cleanerJRadioButton);



 



       //
set up grossWagesJLabel



       grossWagesJLabel = new JLabel();



       grossWagesJLabel.setBounds(235,
136, 90, 30);



       grossWagesJLabel.setText("wages:");



        contentPane.add(grossWagesJLabel);



 



       //
set up grossWagesJTextField



       grossWagesJTextField = new JTextField();



       grossWagesJTextField.setBounds(280,
136, 140, 30);



       grossWagesJTextField.setHorizontalAlignment(



          JTextField.RIGHT);



       grossWagesJTextField.setEditable(false);



       contentPane.add(grossWagesJTextField);



 



       //
set up calculateJButton



       calculateJButton = new JButton();



       calculateJButton.setBounds(80,
136, 150, 30);



       calculateJButton.setText("Calculate");



       contentPane.add(calculateJButton);



       calculateJButton.addActionListener(



 



          new ActionListener() //
anonymous inner class



       {



           //
event handler called when calculateJButton is pressed



           public
void actionPerformed(ActionEvent
event)



           {



              calculateJButtonActionPerformed(event);



           }



 



       } //
end anonymous inner class



 



     
); // end call to addActionListener



 



       //
set properties of application's window



       setTitle("Wage Calculator"); // set title bar text



       setSize(460, 200);           // set
window size



       setVisible(true);           
// display window



 



    } //
end method createUserInterface



 



    //
method called when user presses calculateJButton



    private
void calculateJButtonActionPerformed(ActionEvent event)



    {



       //
get hours



       double
hours =



          Double.parseDouble(hoursJTextField.getText());



 



       //
get number of overtime



       double
overtime =



          Double.parseDouble(overtimeJTextField.getText());



 



       //
gross wages for week; calculated in if...else statement



       double
wages = 0.0;



 



       if
(managerJRadioButton.isSelected())



       {



           wages = hours * 30 +
overtime * 60;



       }



       else
if (subManagerJRadioButton.isSelected())



       {



           wages = hours * 15 +
overtime * 30;



       }



       else
if (cashierJRadioButton.isSelected())



       {



           wages = hours * 10 +
overtime * 20;



       }



       else
if (cleanerJRadioButton.isSelected())



       {



           wages = hours * 4 +
overtime * 8;



       }



 



       //
specify output format



       DecimalFormat
pounds = new DecimalFormat("$0.00");



 



       //
display gross wages



       grossWagesJTextField.setText(pounds.format(wages));



 



    } //
end method calculateJButtonActionPerformed



 



    // main
method



    public
static void
main(String[] args)



    {



       WageCalculator
application = new WageCalculator();



       application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



 



    } //
end method main



 



} // end class WageCalculator



 



(以下题目出题形式可能是填部分代码、写对应代码的功能(意思)、整个功能)



三、程序中定义了两个抽象类SuperAbstractSubAbstract,一个接口AsSuper,一个具体类InheritAbstract,其中SubAbstract既继承抽象类SuperAbstract,同时又实现接口AsSuper,由于它未提供父抽象类和接口要求的所有抽象函数,所以它任为抽象类,不能实例化。InheritAbstract类实现了父抽象类和接口所要求的所有抽象方法。



       在主函数中,通过类InheritAbstract的实例化对象institute调用了抽象类和接口所要求的所有抽象方法。



输出结果:



In mainclass,implemented method f() from
SubAbstract.



In mainclass,implemented method g() from
SubAbstract.



Defined method a() in SuperAbstract.



In SubAbstract,implements method b() from
SuperAbstract.



1314520in mainclass,implement
method c() from SuperAbstract.



In mainclass,must implement method x() from
interface!



In mainclass,must implement method y() from
interface!



 



四、本程序为银行账户的存取款线程设计,通过synchronized互斥锁实现存取款的同步。程序中包含三个类,银行账户类Account,存款线程类Save2和取款线程类Fectch2.



       在主函数中先创建一个新账户a1,并创建三个线程,分别调用函数start()使线程处于可运行状态,该函数再调用run()函数使线程处于运行状态,由于账户对象a1synchronized修饰,故账户a1在任一时刻只能有一个线程访问。这样实现多个存取款线程的同步,保证账户金额的一致性。



输出结果:



现有0, 存入100, 余额100



现有100, 存入200, 余额300



现有300, 取走300, 余额0



 



五、背了Reference Answer



import java.io.*;

 public class
MemoController{

  FileOutputStream
fos;

  OutputStreamWriter
osw;

  BufferedWriter
bw;



 public
MemoController(){

  try{

    fos=new
FileOutputStream("memo.txt",true);

    osw=new
OutputStreamWriter(fos);

    bw=new
BufferedWriter(osw);

    }catch(FileNotFoundException
e){};

  }

 public
synchronized void append(String s){

  try{

    bw.write(s,0,s.length());


    bw.flush();

    bw.close();

    osw.close();

    fos.close();

    }catch(IOException
e){}

  }

 public static
void main(String args[]){

  MemoController
mmc=new MemoController();

  mmc.append("I
am xubin ");

  }

 }



 



六、通过JDBC存取studyDSN数据库中的表course,输出所以字段的值。同时说明java应用程序通过jdbc存取数据库时应遵循的五个步骤:(注意其在程序中的相应位置



1.加载JDBC驱动程序



2.建立数据库连接



3.建立SQL语句对象,执行查询



4.处理结果集



5.关闭数据库连接



 



七、计算一周中不同员工的加班工资:



两个输入框:一个是Hours(时间)、一个是Overtime(额外工作时间),一个输出标签wages(总工资)



选择Manager    
输出工资=hours *
30+overtime*60



选择SubManager,输出工资=hours * 15+overtime*30



选择cashier       输出工资=hours * 10+overtime*20



选择cleaner    
输出工资=hours * 4
+overtime* 8



运行结果:









 



 



 



 



 



 



 



 



 



文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条