Java输入小数和整数求COSx_Java SE考试--编程题总结(优秀范文五篇)

线程和进程的区别:

(1)进程是运行中的程序,拥有自己独立的内存空间和资源;

(2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; (3)线程是最小的处理单位,多个线程共享一块内存和资源;

(4)当一个线程改变了所属进程的变量时,其它线程下次访问该变量时得到这种改变。 简述什么是多线程。

线程的最主要功能是多任务处理,即多线程。多线程也就是在主线程中有多个线程在运行,多个线程的执行是并发的,在逻辑上“同时”,而不管是不是物理上的“同时”。

多线程和传统上的单线程在程序设计上的区别在于: 由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度、同步等问题是需要重点留意的。

引入线程的优点:

1 充分利用CPU资源。 2简化编程模型。

3简化异步事件处理。4使GUI更有效率。5节约成本 线程状态:

Thread和Runnable区别:

(1)Thread是类,具有线程的所有方法,其对象就是一个线程对象。但继承Thread,就不能再继承其他的类(Java只支持单一继承)。

(2)Runnable是接口,只提供run()方法。实现该接口的类还可以继承其他类,但其对象不是线程对象,不能直接运行,必须通过Thread将其启动。 通过Runnable接口创建线程的步骤如下:

1、实例化实现Runnable接口的类;

2、建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法;

3、通过Thread类的start()方法建立线程。 线程优先级:

(1)线程的优先级代表该线程的重要程度。

(2)当有多个线程同时处于可执行状态并等待获得CPU时间时,线程调度系统根据各个线程的优先级来决定CPU分配时间。

(3)优先级高的线程有更大的机会获得CPU时间。

(4)线程的默认优先级值:Thread.NORM_PRIORITY,值为5。每个新线程均继承创建线程的优先级。setPriority()设置线程优先级。

值为MIN_PRIORITY(1)和MAX_PRIORITY(10)之间的值。getPriority() 获取线程的优先级值。 线程通信:

(1)线程通信的方法:wait()、notify()和notifyAll() (2)调用notify()方法时可以随机选择一个在该对象调用wait()方法的线程,解除它的阻

1 塞。

(3)调用notifyAll()方法可以唤醒等待该对象的所有线程。但唤醒时无法控制唤醒哪个线程,唤醒过程完全由系统来控制。

(4)notify()方法和notifyAll()方法只能在同步方法或同步块内部使用。 产生死锁的原因主要是:

所谓死锁,是指两个或多个线程都在等待对方释放对象资源而进入的一种不可“调节”的状态。

1、因为系统资源不足;

2、进程运行推进的顺序不合适;

3、资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 wait()方法区别于sleep()方法的是:

(1)wait()方法调用时会释放对象锁,而sleep()方法不会 (2)sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用 (3)sleep()是Thread类的Static(静态)的方法; (4)wait()方法是Object类里的方法;wait()使用notify或者notifyAlll或者指定睡眠时间来唤醒当前等待池中的线程。

(5)wait()必须放在synchronized block中,否则会在运行时扔出”java.lang.IllegalMonitorStateException“异常。

通信协议指网络中传递、管理信息的一些规范。TCP/IP协议,IPX/SPX协议,NetBEUI协议等。

TCP/IP协议

IP协议:网络层协议,保证计算机之间发送和接收数据,能适应各种网络硬件。 无连接,不可靠的协议。

TCP协议:端对端的协议,端与端之间建立连接、发送、接收数据以及终止连接。 利用重发技术和拥塞控制机制,向应用程序提供可靠通信连接。

区别与联系:IP协议只保证计算机能发送和接受分组数据,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。两个协议统称为TCP/IP协议。

A类地址:0-126,默认掩码:255.0.0.0。B类地址:128-191,默认掩码:255.255。C类地址:192-223,默认掩码:255.255.255.0。D类地址:广播地址,E类地址保留。

常用端口以及对应的服务 7:Echo服务端口

21:FTP服务端口

23:Telnet服务端口 25:SMTP服务端口 80:HTTP服务端口 网络API:

(1)Java中有关网络方面的功能都定义在java.net包中。 (2)使用InetAddress类封装IP地址和域名

(3)URL由四部分组成。协议名:指明获取资源所使用的传输协议。主机名:指定获取资源的域名。端口:指定服务的端口。文件路径:指定访问的文件名以及路径。 URLConnection类:

(1)通过URL的方法openStream()只能从网络上读取数据,如果如要输出数据,就要用到URLConnection类。

2 (2)URLConnection是个抽象类,代表与URL指定的数据源的动态连接。

(3)URLConnection类提供比URL类更强的服务器交互控制,允许用Post或者Put和其他HTTP请求方法将数据送回服务器。 Socket的工作步骤:

1根据指定的地址和端口创建一个Socket对象。

2调用getInputStream()方法或getOutputStream()方法打开连接到Socket的输入/输出流。 3客户端与服务器根据一定的协议交互,直到关闭连接。 4关闭客户端的Socket。 ServerSocket的工作步骤:

1根据指定端口创建一个新的ServerSocket对象。

2调用ServerSocket的accept()方法,在指定的端口监听到来的连接。Accpet()一直处于阻塞状态,知道有客户端试图建立连接。这时accpet()方法返回连接客户端与服务器的Socket对象。

3调用getInputStream()方法或getOutputStream()方法打开连接到Socket的输入/输出流。

4服务器与客户端根据一定的协议交互,直到关闭连接。

5关闭服务器端的Socket。6回到第2步,继续监听下一次的连接。 多线程Socket通信实现:

服务器总是在指定的端口监听是否有客户端请求,一旦监听到客户请求,服务器就会启动一个专门的服务线程来响应客户请求,而服务器本身在启动完线程之后马上有进入监听状态,等待下一个客户的到来。 synchronized两种使用方式:

1.修饰方法,使调用该方法的线程均能获得该对象的锁。 2.放在代码块中,修饰对象,当前代码获得对象的锁。。。锁定的是对象,而不是方法或代码块。

Swing的结构:

(1)Swing组件位于javax.swing包中,javax是一个Java扩展包。 (2)在javax.swing包中,定义了两种类型的组件:

顶层容器(不包含在其他容器中的容器,JFrame,JApplet,JDialog和Jwindow 4个)和轻量级组件。

Swing组件都是AWT的Container类的直接子类和间接子类。 布局:

(1)用来管理组件在容器中的布局格式。

(2)FlowLayout, BorderLayout, GridLayout和CardLayout四种。位于java.awt包中。 (3)FlowLayout流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有适合的按钮。线的对齐方式由align属性确定。 (4)BorderLayout边界布局,JFrame的默认布局。

(5)GridLayout网格布局,类似于表格,按照行列排列所有组件,每个单元格大小一样。添加组件使,按照从左至右,自上而下的顺序加入。

(6)CardLayout卡片布局,将加入到容器的组件看作一叠卡片,只能看到最上面的组件 常用的事件类:

java.awt.event包中常用的事件类:

ActionEvent, AdjustmentEvent, ItemEvent, FocusEvent, KeyEvent, MouseEvent, WindowEvent。

3 java.awt.event包中常用的监听接口:

ActionListener,AdjustmentListener, ItemListener, FocusListener, KeyListener, MouseListener, WindowListener。 适配器:

(1)扩展监听接口时,有些事件处理方法是不需要的,但必须重写。

(2)出于简化代码的目的,java.awt.event包中提供了一个抽象适配器类,分别实现每个具有多个事件处理方法的监听接口。

(3)继承适配器后,可以仅重写需要的事件处理方法。 事件处理的步骤:

1创建监听类,监听类中,事件处理方法中编写事件处理代码 2创建监听对像。

3利用组件的addXXXListener()方法将监听对象注册到组件上 3者区别联系:

监听类:是一个扩展监听接口的类,可以扩展一个或多个监听接口。

事件处理方法:是监听接口中已经定义好的相应的事件处理方法,要重写。 监听对象:是监听类的一个实例对象,具有监听功能。

事件用于实现用户界面的交互,是GUI编程的重要组成部分。 Java最新的事件处理方法是基于委派事件模型的。

事件包含3个组件:事件对象、事件源和事件处理程序。

事件是一个描述事件源状态改变的对象,不是通过new 创建的,而是由用户操作触发的。 一个事件源可能会生成不同类型的事件。 可以将一个事件发送到多个监听器对象。

监听类是实现监听接口的类,监听对象是监听类的实例化对象 在组件中注册监听器的方法是:addXxxxListener()。 适配器是实现相关监听接口的类,目的是简化程序代码 创建菜单的步骤:

1创建一个JMenuBar菜单栏对象,将其设置到窗体中。

2创建若干个JMenu菜单对象,将其放置到JMenuBar对象中,或按要求放到其他JMenu对象中。

3创建若干个JMenuItem菜单项对中,将其放置到对应的JMenu对象中。 JPopupMenu:弹出式菜单 位置不固定、无标题

(JDialog类)模式对话框:必须首先对该对话框进行响应(单击“确定”或“取消”)后,才能对对话框以外的应用程序进行操时;

无模式对话框:可以不响应对话框,对其以外的程序进行操作。 JTable类--表格模型 TableModel:

TableModel本身是个接口,若要实现此接口建立表格非常复杂,因此Java提供了两个类实现了TableModel接口: (1)AbstractTableModel:抽象类,实现了大部分的TableModel方法。AbstractTableModel 类 对 TableModel 接口中大部分方法提供部分实现,它关注监听器的管理,并生成TableModeEvents 事件,以及把他们发送到监听器提供方便。

(2)DefaultTableModel:继承AbstractTableModel,是默认的表格模型类。

(3)要创建一个TableModel,可以简单扩展AbstractTableModel类并且至少实现下列三

4 个方法 public int getRowCount()、public int getColumnCount()、public Object getValueAt(int row,int column) 使用JDBC访问数据库的基本步骤:

1加载JDBC驱动程序(Class.forName(“oracle.jdbc.driver.OracleDriver”); )。2建立数据库连接(Class.forName(“oracle.jdbc.driver.OracleDriver”); Connection conn = DriverManager.getConnection(

“jdbc:oracle:thin:@localhost:1521:orcl”,

“scott”, “tiger”);)。3创建Statement对象 4执行SQL语句。5 处理返回结果。6 关闭创建的对象 Statement中3个执行方法的不同:

(1)execute():用于执行返回多个结果集、多个更新计数或二者的混合。 (2)executeUpdate():用于执行insert、update、delete语句及SQl DDL语句。插、更、删效果是修改表中的行或列,返回值一个整数,即影响行数。对于建立、删除返回值为0。 (3)executeQuery():用于产生单个结果集的语句,例如select语句。 事务的ACID特性:

数据库中的操作通常是一个独立单元,事务是构成单一逻辑单位的操作集合。 已提交事务是指成功执行完毕的事务,未能成功完成的事务成为中止事务,对中止事务造成的变更需要进行撤销处理,成为事务回滚。 原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)、持久性(Durabilily)。

保存点: 集元数据: 集元数据 Meta Data,是有关数据库和表格结构的信息,如数据库的表、表的列、表的索引、数据类型、对SQL的支持程度等信息。 DatabaseMetaData接口

(1)主要用来得到数据库的信息,如:数据库中所有表格的列表、系统函数、关键字、数据库产品名和数据库支持的JDBC驱动名。

(2)通过Connection.getMetaData()方法创建。 (3)主要提供了两大类方法:

1.返回类型boolean的,用于检查数据库或驱动器是否支持某项功能。 2.用于获取数据库或驱动器本身的某些特征值。

通过Statement实现静态SQL查询

使用PreparedStatement实现动态SQL查询 使用CallableStatement实现存储过程的调用

DatabaseMetaData接口用于得到关于数据库的信息 ResultSetMetaData接口主要用来获取结果集的结构 JDBC默认的事务提交模式是自动提交

通过setAutoCommit()方法控制自动提交模式,使用rollback()方法实现事务回滚 开发RMI--步骤:

1 定义远程接口。2 实现远程接口。3 编写和实现远程服务类。4 编写客户端程序 RMI机制原理:

2个独立程序。服务器端、客户端 服务器端:

5 (1)创建多个远程对象,

(2)调用注册服务程序使得名字与远程对象关联,使得这些远程对象能够被引用, (3)等待客户端调用这些远程对象的方法。 客户端:

(1)在服务器上的注册服务程序中用远程对象名称查找一个或者多个远程对象的引用, (2)调用远程对象的方法。

JOptionPane类中四种对话框的静态方法

1消息对话框(showmessagedialog)2输入对话框(input) 3确认对话框(Option)4选项对话框(Confirm) Locale常用定义:

Locale类是用来标识本地化消息的重要工具类。该类包含对主要地理区域的地域化特征的封装。通过设定Locale为特定的国家或地区,提供符合当地文化习惯的字体、图标和表达格式。

简述java异常处理机制 :

java提供了两种处理异常的机制:一是捕获异常,二是声明抛出异常. 在java运行过程中系统得到一个异常对象时,它会沿着方法的调用栈逐层回溯,寻找处理这个异常的代码,,找到后,系统把当前异常对象教给这个方法处理,这就是捕获异常.如果方法中不知道如何处理所出现的异常,则可在定义方法时,声明抛出异常.

使用JDBC查询Scott用户的emp表中的所有信息? String sql="select * from emp"; PreparedStatement stmt =conn.prepareStatement(sql); ResultSet rs = stmt.executeQuery(); int columnCount = rs.getMetaData().getColumnCount(); //这地方补充了一下 while (rs.next()) { for (int i = 1; i <= columnCount; i++) { System.out.println( md.getColumnName(i) + " -- " + rs.getObject(i) ); } } JDBC API的三个组成部分: 1 JDBC驱动程序管理器 2 JDBC驱动程序测试包 3 JDBC-OCBC桥

加载JDBC驱动程序中加载驱动程序的一种简单方法是使用Class.forName方法显示加载: Class.forName(“DriverName”); 对于JDBC/ODBC桥,加载JDBC-ODBC数据库驱动程序的方法为: Class.forName(“sun.jdnc.odbc.JdbcOdbcDriver”);

6 而对于Oracle数据库,加载数据库驱动程序的方法为: Class.forName(“oracle.jdbc.driver.OracleDriver”); 对于Oracle驱动连接的是URL是:

Jdbc:oracle:thin:@serverName:port:instance 通过Oracle驱动获得数据库连接的实力语句:

Class.forName(“oracle.jdbc.driver.OracleDriver”); Connection conn = DriverManager.getConnection( “jdbc:oracle:thin:@localhost:1521:orcl”,”scott”,”tiger”);

多线程Socket通信中多个while循环是用来监听的。

TableModel本身是一个借口,若是要直接实现此接口来建立表格是非常复杂的,因此java中还提供了AbstractTableModel和DefaultTableModel这两个类分别实现TableModel接口。 ListSelecyionModel接口中的常量:

static final int SINGLE_SELECTION 单一选择模式 static final int SINGLE_INTERVAL_SELECTION 连续区间选择模式 static final int MULTIPLE_INTERVAL_SELECTION 多重选择模式

简述实现一个自定义的对话框的步骤?

(1)继承JDialog类,在构造方法中传入参数 (2)在对话框中添加用户界面组件 (3)添加事件处理 (4)设置对话框大小

什么是检查型异常,非检查型异常

检查型异常:指编译器要求必须处置的异常,是程序运行时由于外界因素造成的一般性异常 非检查型异常:指编译器不要求强制处理的异常,该异常是因设计或实现方式不当导致的,可以避免这种异常的发生. 简述一下使用泛型有什么优点?

答:泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

2.简要描述ArrayList,Vector,LinkedList的存储性能和特性? 答:ArrayList支持可随需要而调整的动态数组。其内部封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个capacity,表示存储列表中元素的数组的容量。当元素添加到ArrayList时,它的capacity自动增加。在向一个ArrayList对象添加大量元素的程序中,可使用ensureCapacity()方法增加Capacity,此法可以减少或增加重分配的数量。Vector 由于使用了synchronized 方法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储,按序号索引数据需要进 行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 3.简述Collection和Collections的区别。

答:java.util.Collection 是一个集合接口集合接口集合接口集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态静态静态静态多

7 态方法多态方法多态方法多态方法。此类不能实例化不能实例化不能实例化不能实例化,就像一个工具类个工具类个工具类个工具类,服务于Java的Collection框架。 Java代码 。

4、List、Map和Set三个接口,存取元素时,各有什么特点? 答:List 以特定次序来持有元素,可有重复元素。 Set 无法拥有重复元素,内部排序。 Map 保存key-value值,value可多值。

5、描述HashMap和Hashtable的区别。 答:Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。 最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

6、简述序列化和反序列化概念?

对象的序列化就是把对象写入到一个输出流中,对象的反序列化是指从一个输入流中读取一个对象。

7、简述适配器与监听接口的区别?

区别:适配器只需要重写需要的事件处理方法,而监听接口需要实现全部的方法。

监听接口中定义了抽象的事件处理方法,这些方法针对不同的操作进行不同的处理。在程序中,通常使用监听类实现监听接口中的事件处理方法。监听接口定义在java.awt.event包中,该包中提供了不同事件的监听接口,这些接口中定义了不同的抽象的事件处理方法。 扩展监听接口时,有些事件处理方法是不需要的,但必须重写。

处于简化代码的目的,java.awt.event包中有提供了一套抽象适配器类,分别实现每个具有多个事件处理方法的监听接口。这样继承适配器后,可以仅重写需要的事件处理方法。

8

建议开发较大规模的java应用程序都考虑使用mvc模式

首先考虑系统架构,学习使用第三方成熟的jar包,并import到自己的项目中

1、 开发时考虑包的规划,model,view层

2、 应用结对编程原理进行开发,随时保证程序的可运行性。(针对接口的编程)

3、 编译调试代码,注意异常问题的处理

4、 注意javadoc文档的编写应该和代码的编写同步进行

5、 Log4j日志的记录,Junit单元测试工具的使用

6、 代码编写完毕,将其使用jar打包成可执行的jar文件

7、 使用Ant自动化编译测试打包部署工具完成代码的最终发布

线程和进程的区别:

(1)进程是运行中的程序,拥有自己独立的内存空间和资源;

(2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; (3)线程是最小的处理单位,多个线程共享一块内存和资源;

(4)当一个线程改变了所属进程的变量时,其它线程下次访问该变量时得到这种改变。 简述什么是多线程。

线程的最主要功能是多任务处理,即多线程。多线程也就是在主线程中有多个线程在运行,多个线程的执行是并发的,在逻辑上“同时”,而不管是不是物理上的“同时”。

多线程和传统上的单线程在程序设计上的区别在于: 由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度、同步等问题是需要重点留意的。

引入线程的优点:

1 充分利用CPU资源。 2简化编程模型。

3简化异步事件处理。4使GUI更有效率。5节约成本 线程状态:

Thread和Runnable区别:

(1)Thread是类,具有线程的所有方法,其对象就是一个线程对象。但继承Thread,就不能再继承其他的类(Java只支持单一继承)。

(2)Runnable是接口,只提供run()方法。实现该接口的类还可以继承其他类,但其对象不是线程对象,不能直接运行,必须通过Thread将其启动。 通过Runnable接口创建线程的步骤如下:

1、实例化实现Runnable接口的类;

2、建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法;

3、通过Thread类的start()方法建立线程。 线程优先级:

(1)线程的优先级代表该线程的重要程度。

(2)当有多个线程同时处于可执行状态并等待获得CPU时间时,线程调度系统根据各个线程的优先级来决定CPU分配时间。

(3)优先级高的线程有更大的机会获得CPU时间。

(4)线程的默认优先级值:Thread.NORM_PRIORITY,值为5。每个新线程均继承创建线程的优先级。setPriority()设置线程优先级。

值为MIN_PRIORITY(1)和MAX_PRIORITY(10)之间的值。getPriority() 获取线程的优先级值。 线程通信:

(1)线程通信的方法:wait()、notify()和notifyAll() (2)调用notify()方法时可以随机选择一个在该对象调用wait()方法的线程,解除它的阻

1 塞。

(3)调用notifyAll()方法可以唤醒等待该对象的所有线程。但唤醒时无法控制唤醒哪个线程,唤醒过程完全由系统来控制。

(4)notify()方法和notifyAll()方法只能在同步方法或同步块内部使用。 产生死锁的原因主要是:

所谓死锁,是指两个或多个线程都在等待对方释放对象资源而进入的一种不可“调节”的状态。

1、因为系统资源不足;

2、进程运行推进的顺序不合适;

3、资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 wait()方法区别于sleep()方法的是:

(1)wait()方法调用时会释放对象锁,而sleep()方法不会 (2)sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用 (3)sleep()是Thread类的Static(静态)的方法; (4)wait()方法是Object类里的方法;wait()使用notify或者notifyAlll或者指定睡眠时间来唤醒当前等待池中的线程。

(5)wait()必须放在synchronized block中,否则会在运行时扔出”java.lang.IllegalMonitorStateException“异常。

通信协议指网络中传递、管理信息的一些规范。TCP/IP协议,IPX/SPX协议,NetBEUI协议等。

TCP/IP协议

IP协议:网络层协议,保证计算机之间发送和接收数据,能适应各种网络硬件。 无连接,不可靠的协议。

TCP协议:端对端的协议,端与端之间建立连接、发送、接收数据以及终止连接。 利用重发技术和拥塞控制机制,向应用程序提供可靠通信连接。

区别与联系:IP协议只保证计算机能发送和接受分组数据,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。两个协议统称为TCP/IP协议。

A类地址:0-126,默认掩码:255.0.0.0。B类地址:128-191,默认掩码:255.255。C类地址:192-223,默认掩码:255.255.255.0。D类地址:广播地址,E类地址保留。

常用端口以及对应的服务 7:Echo服务端口

21:FTP服务端口

23:Telnet服务端口 25:SMTP服务端口 80:HTTP服务端口 网络API:

(1)Java中有关网络方面的功能都定义在java.net包中。 (2)使用InetAddress类封装IP地址和域名

(3)URL由四部分组成。协议名:指明获取资源所使用的传输协议。主机名:指定获取资源的域名。端口:指定服务的端口。文件路径:指定访问的文件名以及路径。 URLConnection类:

(1)通过URL的方法openStream()只能从网络上读取数据,如果如要输出数据,就要用到URLConnection类。

2 (2)URLConnection是个抽象类,代表与URL指定的数据源的动态连接。

(3)URLConnection类提供比URL类更强的服务器交互控制,允许用Post或者Put和其他HTTP请求方法将数据送回服务器。 Socket的工作步骤:

1根据指定的地址和端口创建一个Socket对象。

2调用getInputStream()方法或getOutputStream()方法打开连接到Socket的输入/输出流。 3客户端与服务器根据一定的协议交互,直到关闭连接。 4关闭客户端的Socket。 ServerSocket的工作步骤:

1根据指定端口创建一个新的ServerSocket对象。

2调用ServerSocket的accept()方法,在指定的端口监听到来的连接。Accpet()一直处于阻塞状态,知道有客户端试图建立连接。这时accpet()方法返回连接客户端与服务器的Socket对象。

3调用getInputStream()方法或getOutputStream()方法打开连接到Socket的输入/输出流。

4服务器与客户端根据一定的协议交互,直到关闭连接。

5关闭服务器端的Socket。6回到第2步,继续监听下一次的连接。 多线程Socket通信实现:

服务器总是在指定的端口监听是否有客户端请求,一旦监听到客户请求,服务器就会启动一个专门的服务线程来响应客户请求,而服务器本身在启动完线程之后马上有进入监听状态,等待下一个客户的到来。 synchronized两种使用方式:

1.修饰方法,使调用该方法的线程均能获得该对象的锁。 2.放在代码块中,修饰对象,当前代码获得对象的锁。。。锁定的是对象,而不是方法或代码块。

Swing的结构:

(1)Swing组件位于javax.swing包中,javax是一个Java扩展包。 (2)在javax.swing包中,定义了两种类型的组件:

顶层容器(不包含在其他容器中的容器,JFrame,JApplet,JDialog和Jwindow 4个)和轻量级组件。

Swing组件都是AWT的Container类的直接子类和间接子类。 布局:

(1)用来管理组件在容器中的布局格式。

(2)FlowLayout, BorderLayout, GridLayout和CardLayout四种。位于java.awt包中。 (3)FlowLayout流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有适合的按钮。线的对齐方式由align属性确定。 (4)BorderLayout边界布局,JFrame的默认布局。

(5)GridLayout网格布局,类似于表格,按照行列排列所有组件,每个单元格大小一样。添加组件使,按照从左至右,自上而下的顺序加入。

(6)CardLayout卡片布局,将加入到容器的组件看作一叠卡片,只能看到最上面的组件 常用的事件类:

java.awt.event包中常用的事件类:

ActionEvent, AdjustmentEvent, ItemEvent, FocusEvent, KeyEvent, MouseEvent, WindowEvent。

3 java.awt.event包中常用的监听接口:

ActionListener,AdjustmentListener, ItemListener, FocusListener, KeyListener, MouseListener, WindowListener。 适配器:

(1)扩展监听接口时,有些事件处理方法是不需要的,但必须重写。

(2)出于简化代码的目的,java.awt.event包中提供了一个抽象适配器类,分别实现每个具有多个事件处理方法的监听接口。

(3)继承适配器后,可以仅重写需要的事件处理方法。 事件处理的步骤:

1创建监听类,监听类中,事件处理方法中编写事件处理代码 2创建监听对像。

3利用组件的addXXXListener()方法将监听对象注册到组件上 3者区别联系:

监听类:是一个扩展监听接口的类,可以扩展一个或多个监听接口。

事件处理方法:是监听接口中已经定义好的相应的事件处理方法,要重写。 监听对象:是监听类的一个实例对象,具有监听功能。

事件用于实现用户界面的交互,是GUI编程的重要组成部分。 Java最新的事件处理方法是基于委派事件模型的。

事件包含3个组件:事件对象、事件源和事件处理程序。

事件是一个描述事件源状态改变的对象,不是通过new 创建的,而是由用户操作触发的。 一个事件源可能会生成不同类型的事件。 可以将一个事件发送到多个监听器对象。

监听类是实现监听接口的类,监听对象是监听类的实例化对象 在组件中注册监听器的方法是:addXxxxListener()。 适配器是实现相关监听接口的类,目的是简化程序代码 创建菜单的步骤:

1创建一个JMenuBar菜单栏对象,将其设置到窗体中。

2创建若干个JMenu菜单对象,将其放置到JMenuBar对象中,或按要求放到其他JMenu对象中。

3创建若干个JMenuItem菜单项对中,将其放置到对应的JMenu对象中。 JPopupMenu:弹出式菜单 位置不固定、无标题

(JDialog类)模式对话框:必须首先对该对话框进行响应(单击“确定”或“取消”)后,才能对对话框以外的应用程序进行操时;

无模式对话框:可以不响应对话框,对其以外的程序进行操作。 JTable类--表格模型 TableModel:

TableModel本身是个接口,若要实现此接口建立表格非常复杂,因此Java提供了两个类实现了TableModel接口: (1)AbstractTableModel:抽象类,实现了大部分的TableModel方法。AbstractTableModel 类 对 TableModel 接口中大部分方法提供部分实现,它关注监听器的管理,并生成TableModeEvents 事件,以及把他们发送到监听器提供方便。

(2)DefaultTableModel:继承AbstractTableModel,是默认的表格模型类。

(3)要创建一个TableModel,可以简单扩展AbstractTableModel类并且至少实现下列三

4 个方法 public int getRowCount()、public int getColumnCount()、public Object getValueAt(int row,int column) 使用JDBC访问数据库的基本步骤:

1加载JDBC驱动程序(Class.forName(“oracle.jdbc.driver.OracleDriver”); )。2建立数据库连接(Class.forName(“oracle.jdbc.driver.OracleDriver”); Connection conn = DriverManager.getConnection(

“jdbc:oracle:thin:@localhost:1521:orcl”,

“scott”, “tiger”);)。3创建Statement对象 4执行SQL语句。5 处理返回结果。6 关闭创建的对象 Statement中3个执行方法的不同:

(1)execute():用于执行返回多个结果集、多个更新计数或二者的混合。 (2)executeUpdate():用于执行insert、update、delete语句及SQl DDL语句。插、更、删效果是修改表中的行或列,返回值一个整数,即影响行数。对于建立、删除返回值为0。 (3)executeQuery():用于产生单个结果集的语句,例如select语句。 事务的ACID特性:

数据库中的操作通常是一个独立单元,事务是构成单一逻辑单位的操作集合。 已提交事务是指成功执行完毕的事务,未能成功完成的事务成为中止事务,对中止事务造成的变更需要进行撤销处理,成为事务回滚。 原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)、持久性(Durabilily)。

保存点: 集元数据: 集元数据 Meta Data,是有关数据库和表格结构的信息,如数据库的表、表的列、表的索引、数据类型、对SQL的支持程度等信息。 DatabaseMetaData接口

(1)主要用来得到数据库的信息,如:数据库中所有表格的列表、系统函数、关键字、数据库产品名和数据库支持的JDBC驱动名。

(2)通过Connection.getMetaData()方法创建。 (3)主要提供了两大类方法:

1.返回类型boolean的,用于检查数据库或驱动器是否支持某项功能。 2.用于获取数据库或驱动器本身的某些特征值。

通过Statement实现静态SQL查询

使用PreparedStatement实现动态SQL查询 使用CallableStatement实现存储过程的调用

DatabaseMetaData接口用于得到关于数据库的信息 ResultSetMetaData接口主要用来获取结果集的结构 JDBC默认的事务提交模式是自动提交

通过setAutoCommit()方法控制自动提交模式,使用rollback()方法实现事务回滚 开发RMI--步骤:

1 定义远程接口。2 实现远程接口。3 编写和实现远程服务类。4 编写客户端程序 RMI机制原理:

2个独立程序。服务器端、客户端 服务器端:

5 (1)创建多个远程对象,

(2)调用注册服务程序使得名字与远程对象关联,使得这些远程对象能够被引用, (3)等待客户端调用这些远程对象的方法。 客户端:

(1)在服务器上的注册服务程序中用远程对象名称查找一个或者多个远程对象的引用, (2)调用远程对象的方法。

JOptionPane类中四种对话框的静态方法

1消息对话框(showmessagedialog)2输入对话框(input) 3确认对话框(Option)4选项对话框(Confirm) Locale常用定义:

Locale类是用来标识本地化消息的重要工具类。该类包含对主要地理区域的地域化特征的封装。通过设定Locale为特定的国家或地区,提供符合当地文化习惯的字体、图标和表达格式。

简述java异常处理机制 :

java提供了两种处理异常的机制:一是捕获异常,二是声明抛出异常. 在java运行过程中系统得到一个异常对象时,它会沿着方法的调用栈逐层回溯,寻找处理这个异常的代码,,找到后,系统把当前异常对象教给这个方法处理,这就是捕获异常.如果方法中不知道如何处理所出现的异常,则可在定义方法时,声明抛出异常.

使用JDBC查询Scott用户的emp表中的所有信息? String sql="select * from emp"; PreparedStatement stmt =conn.prepareStatement(sql); ResultSet rs = stmt.executeQuery(); int columnCount = rs.getMetaData().getColumnCount(); //这地方补充了一下 while (rs.next()) { for (int i = 1; i <= columnCount; i++) { System.out.println( md.getColumnName(i) + " -- " + rs.getObject(i) ); } } JDBC API的三个组成部分: 1 JDBC驱动程序管理器 2 JDBC驱动程序测试包 3 JDBC-OCBC桥

加载JDBC驱动程序中加载驱动程序的一种简单方法是使用Class.forName方法显示加载: Class.forName(“DriverName”); 对于JDBC/ODBC桥,加载JDBC-ODBC数据库驱动程序的方法为: Class.forName(“sun.jdnc.odbc.JdbcOdbcDriver”);

6 而对于Oracle数据库,加载数据库驱动程序的方法为: Class.forName(“oracle.jdbc.driver.OracleDriver”); 对于Oracle驱动连接的是URL是:

Jdbc:oracle:thin:@serverName:port:instance 通过Oracle驱动获得数据库连接的实力语句:

Class.forName(“oracle.jdbc.driver.OracleDriver”); Connection conn = DriverManager.getConnection( “jdbc:oracle:thin:@localhost:1521:orcl”,”scott”,”tiger”);

多线程Socket通信中多个while循环是用来监听的。

TableModel本身是一个借口,若是要直接实现此接口来建立表格是非常复杂的,因此java中还提供了AbstractTableModel和DefaultTableModel这两个类分别实现TableModel接口。 ListSelecyionModel接口中的常量:

static final int SINGLE_SELECTION 单一选择模式 static final int SINGLE_INTERVAL_SELECTION 连续区间选择模式 static final int MULTIPLE_INTERVAL_SELECTION 多重选择模式

简述实现一个自定义的对话框的步骤?

(1)继承JDialog类,在构造方法中传入参数 (2)在对话框中添加用户界面组件 (3)添加事件处理 (4)设置对话框大小

什么是检查型异常,非检查型异常

检查型异常:指编译器要求必须处置的异常,是程序运行时由于外界因素造成的一般性异常 非检查型异常:指编译器不要求强制处理的异常,该异常是因设计或实现方式不当导致的,可以避免这种异常的发生. 简述一下使用泛型有什么优点?

答:泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

2.简要描述ArrayList,Vector,LinkedList的存储性能和特性? 答:ArrayList支持可随需要而调整的动态数组。其内部封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个capacity,表示存储列表中元素的数组的容量。当元素添加到ArrayList时,它的capacity自动增加。在向一个ArrayList对象添加大量元素的程序中,可使用ensureCapacity()方法增加Capacity,此法可以减少或增加重分配的数量。Vector 由于使用了synchronized 方法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储,按序号索引数据需要进 行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 3.简述Collection和Collections的区别。

答:java.util.Collection 是一个集合接口集合接口集合接口集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态静态静态静态多

7 态方法多态方法多态方法多态方法。此类不能实例化不能实例化不能实例化不能实例化,就像一个工具类个工具类个工具类个工具类,服务于Java的Collection框架。 Java代码 。

4、List、Map和Set三个接口,存取元素时,各有什么特点? 答:List 以特定次序来持有元素,可有重复元素。 Set 无法拥有重复元素,内部排序。 Map 保存key-value值,value可多值。

5、描述HashMap和Hashtable的区别。 答:Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。 最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

6、简述序列化和反序列化概念?

对象的序列化就是把对象写入到一个输出流中,对象的反序列化是指从一个输入流中读取一个对象。

7、简述适配器与监听接口的区别?

区别:适配器只需要重写需要的事件处理方法,而监听接口需要实现全部的方法。

监听接口中定义了抽象的事件处理方法,这些方法针对不同的操作进行不同的处理。在程序中,通常使用监听类实现监听接口中的事件处理方法。监听接口定义在java.awt.event包中,该包中提供了不同事件的监听接口,这些接口中定义了不同的抽象的事件处理方法。 扩展监听接口时,有些事件处理方法是不需要的,但必须重写。

处于简化代码的目的,java.awt.event包中有提供了一套抽象适配器类,分别实现每个具有多个事件处理方法的监听接口。这样继承适配器后,可以仅重写需要的事件处理方法。

8

大家必须掌握每种类型的1-3题。

题号考点要求

48、 将两个两位数的整数合并成一个整数

65、 两个正整数合并成一个整数

71、 两个正整数合并成一个整数

77、 两个正整数合并成一个整数

81、 两个正整数合并成一个整数

84、 两个正整数合并成一个整数

87、 两个正整数合并成一个整数

91、 两个正整数合并成一个整数

8、 s=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+.....+n)

9、 p=m!/(n!*(m-n)!)

26、 连加

68、 s=1+1/1!+1/2!+1/3!+........

70、 s=1/(1*2)+1/(2*3)+...+1/(n*(n+1))

76、 s=1+0.5*x+(0.5*(0.5-1)*x*x/2!+......

86、 连加

90、 连加

92、 连加

93、 连加

97、 连加

100、 连加

(

2、)

类似素数或者闰年算法

2、 求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。

58、 求n以内同时能被3与7整除的所有自然数之和的平方根s

3、 求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

27、 求出1到m之间能被7或11整除的整数,放在数组中,通过n返回这些数的个数

63、 求n的所有因子(不包括1与自身)

98、 计算n以内能被5或9整除的所有自然数的倒数之和

15、 w是大于10的无符号整数,若w是n(n>=2)位的整数,则函数求出w的后n-1位的数作为函数值返回。

24、 将数字字符串转化为一个整数

16、 对变量中的值保留两位小数,对第三位四舍五入

(

3、)

1、 一维数组中,将低于平均分的人数作为函数值返回,低于平均分的分数放在below所指的数组中。

82、 计算一维数组中n门课程的平均分

96、 一维数组中每相邻元素之平均值的平方根之和

28、 找出一维数组中最大的值和它所在的下标,两者通过形参返回

7、 求出数组的最大元素在数组中下标并存放在k所指的存贮单元中。

43、 从num个字符串中找出最长的一个字符串,并通过形参指针传回

39、 移动数组中的内容,前p个数移动到数组后面

40、 移动数组中的内容,前m个字符移动到后面

5、 将大于整数m且紧靠m的k个素数存入xx所指的数组中。

20、 求出小于变量m的所有素数并放在一个数组中

51、 将大于1小于m的非素数存入xx所指数组中,个数通过形参返回

99、 计算3到n之间所有素数的平方根之和

29、 将字符串中下标为奇数位置上的字母转化为大写

47、 字符串中所有下标为奇数的字母转为大写

31、 将字符串中除了下标为偶数、同时ASCII码也为偶数的字符外,其余的全都删除;串中剩余字符放在t字符串中

32、 除了下标为奇数、同时ASCII码也为奇数的字符外,其余的全都删除;串中剩余字符放在t字符串中

49、 将字符串中下标为偶数且ASCII码为奇数的字符删除

19、 从字符串中删除指定字符

64、 将字符串中ASCII值为奇数的字符删除,剩余字符放在t所指字符串中

72、 将字符串中下标为偶数的字符删除

78、 字符串中ASCII为偶数的字符删除

35、 删除字符串中所有空格

6、 删除一个字符串中指定下标的字符。

60、 删去一维有序数组中所有相同的数,使之只剩一个

33、 删除字符串中尾部*号,使不超过n个

36、 把字符串中的前导*号全部移到字符串尾部

45、 删除字符串中前导和尾部的*号

56、 字符串中,除了尾部*号外,字符串中其余*号全部删除

73、 删除字符串中除了前导和尾部*号外的所有*号

83、 字符串中尾部*号删除

88、 字符串中除了前导*外,删除其余*号

94、 字符串中,前导*号全部删除

95、 字符串中前导*号不得多于n个

66、 删除字符串中所有*号

(

4、)

17、 字符串内容逆置

23、 判断字符串是否为回文

25、 比较两个字符串的长度(不能用strlen)

52、 实现两个字符串连接

59、 将字符串数组中的字符串依次合并到一个字符串中

21、 字符串中字符按降序排列(选择法排序)

4、 统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。

38、 求出字符串中指定字符的个数

44、 统计长度为2的字符串在另一个字符串出现的次数

62、 统计一行字符串中单词个数

11、 二维数组构成矩阵,使数组左下半三角元素中的值全部置成0

42、 二维数组,将右上半角元素中的值乘以m

80、 二维数组中左下半三角中元素中的值乘以3

12、 求出数组周边元素的平均值

14、 求出二维数组周边元素之和

18、 矩阵行列互换

53、 矩阵B=A+A1

30、 求出二维数组中最大元素的值,此值返回给调用函数

55、 M行N列的二维数组中的数据,按行的顺序依次放到一维数组中

41、 将二维数组中的字符,按列的顺序依次放到一个字符串中

75、 二维数组中数按列的顺序放到一维数组中

13、 求出二维数组每列中最小元素,并依次放在pp所指一维数组中

37、 结构体数组(学号、8门成绩、平均成绩),求出每个学生的平均成绩

34、 把结构体数组(学号、成绩)中分数最高的学生放到h数组中,函数返回人数

74、 把结构体数组(学号、成绩)中分数最低的学生数据放在h所指数组中

50、 结构体数组(学号、成绩),找出成绩最高的学生记录,通过形参返回

54、 结构体数组(学号、成绩),低于平均分的学生数据放在b所指数组中

89、 结构体数组(学号、成绩),高于等于平均分的学生人数通过形参返回

57、 结构体数组(学号、姓名),把指定范围内的学生数据放在所指数组中

67、 结构体数组(学号、成绩)返回指定学号的学生数据(查找)

46、 结构体数组(学号、成绩),按分数降序排列(选择法排序)

22、 链表结构中,找出数值最大的结点,并由函数值返回

85、 链表中,求出平均成绩

10、 迭代法求方程的实根

61、 统计各年龄段人数(建议采用if else)

69、 递归函数

MATLAB 编程题总结

LY 1.输出x,y两个中值较大的一个值。

x=input('x='); y=input('y='); if x>y x else y end 2.输入x,计算y的值。计算函数的值yx1,x0

2x1,x0x=input('x='); if x<0 y=x+1 else y=2*x-1 End 3.输入一学生成绩,评定其等级。方法是:90~100分为“优秀”,80~89分为“良好”,70~79分为“中等”,60~69分为“及格”,60分以为“不合格”

x=input('x='); if x>100 | x<0 y='输入错误' elseif x>=90 y='优秀' elseif x>=80 y='良好' elseif x>=70 y='中等'

elseif x>=60 y='及格' else

y='不合格' end

4.某购物超市节日期间举办购物打折扣的促销活动,优惠办法是:每位顾客当天一次性购物在100元以上者,按九五折优惠;在200元以上者,按九折优惠;在300元以上者,按八五折优惠;在500元以上者,按八折优惠。则可以根据顾客购物款数计算出优惠价。

x=input('x='); if x>=500

y=x*0.8 elseif x>=300 y=x*0.85 elseif x>=200 y=x*0.9 else

y=x*0.95 end

5.编程计算:S=1+2+3+„+100

sum=0;

for i=1:100 sum=sum+i; end sum

6.计算1~100的奇数和.

sum=0;

for i=1:2:100 sum=sum+i; end Sum 或

sum=0;

for i=1:100

if mod(i,2)==1 sum=sum+i; end

end sum

7.百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。

设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:

x+y+z=100 3x+2y+0.5z=100

三个未知数,两个方程,此题有若干个解。

for x=1:33

for y=1:50

for z=1:200

if x+y+z==100 & 3*x+2*y+0.5*z==100 [x,y,z] end end end end

8.我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n

LiYang

第 1 页 / 共 6 页

MATLAB 编程题总结

LY n=1;m=13; while m<26 m=m*(1+0.008); n=n+1; end n 9.求水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)(求出1000以内)

for i=100:999 a(1)=fix(i/100); a(2)=fix((i-a(1)*100)/10); a(3)=i-a(1)*100-a(2)*10; if a(1)^3+a(2)^3+a(3)^3==i i end end 10.鸡兔同笼问题:鸡和兔子关在一个笼子里,已知共有头36个,脚100个,求笼内关了多少只兔子和多少只鸡?

for i=1:50 for j=1:36 if i+j==36&i*2+j*4==100 [i,j] end end end 1.用matlab编程求算式xyz+yzz=532中x, y, z的值(其中xyz和yzz分别表

示一个三位数)。

for x=1:9

for y=1:9 for z=1:9

i=100*x+10*y+z+100*y+10*z+z;

if i==532 [x,y,z] end end end end

2. 用matlab编程完成用一元人民币换成一分、两分、五分的所有兑换方案(即输出所有的组合方式)。

for i=0:20

for j=0:50

k=100-i*5-j*2; if(k>=0) [i,j,k] end end end

3. 有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完,请用matlab编程计算。

day=0;x1=1020 while(x1)

x2=x1/2-2; x1=x2;

day=day+1;

end day

4. 有一堆零件(100到200之间),如果分成4个零件一组的,则多2个零件;若分成7个零件一组的,则多3个零件;若分成9个零件一组的,则多5个零件。用matlab编程求这堆零件总数。

for i=100:200

if(mod(i-2,4)==0)

if(mod(i-3,7)==0)

if(mod(i-5,9)==0) i end end end end

5. 编写程序,求1000至9999之间的回文数.回文数是指正读与反读都一样的数,如1221.

for i=1000:1000:9999 for j=0:9

n=i+j*100+j*10+i/1000 end 6.作函数

yend sin(x),x[0,2]的图象,用蓝色五角星表示点。

x=0:pi/10:2pi; y=sin(x);

plot(x,y,’b-p’);

LiYang

第 2 页 / 共 6 页

MATLAB 编程题总结

LY 1: 编写M函数 32fx2xx6.3, x20.05x3.14计算f(1)f(2)f2(3)

function y= fun1(x) y=(x^36.3)/(x^2 + 0.05*x - 3.14); fun1(1)*fun1(2)+fun1(3)*fun1(3) ans = -12.6023 2:编写M函数x1,x2f(x)3x,2x84x5,8x20,

cosxsinx,x20计算f(0.1),f(1),f(9),f(22),f(2)

function y=fff(x) if x<2 y=x+1; elseif x>=2 & x<=8 y=3*x; elseif x>8 & x<=20 y=4*x-5; else y=cos(x)+sin(x); end 3:根据pi*pi/6=1/1^2+1/2^2+1/3^2+„„+1/n^2,求pi的近似值。当n分别取100,1000,10000时,结果是多少?

y=0;n=100;

for i=1:n y=y+1/i/i; end y y =

1.6350 pi=sqrt(6*y) pi =

3.1321 y=0;n=1000; for i=1:n y=y+1/i/i; end y y =

1.6439 pi=sqrt(6*y) pi =

3.1406 y=0;n=10000; for i=1:n y=y+1/i/i; end y y =

1.6448 pi=sqrt(6*y) pi =

3.1415 (2)y=0; n=8;

y=1./2*n-1; y y=

4:编程求[100,200]之间第一个能被21整除的整数。

for n=100:200 if rem(n,21)~=0 continue end break end

n

5:编写函数文件求半径为r的圆的面积和周长。

function [s,p]=fcircle(r) s=pi*r*r; p=2*pi*r;

6:根据y=1+11,求: 3152n-1(1)y<3时的最大n值。(2)与(1)的n值对应的y值。

y=1;n=1; while(y<3) n=n+2; y=y+1/n;

end

y=y-1/n n=(n+1)/2 运行结果: y =

2.9944

n =

LiYang

第 3 页 / 共 6 页

MATLAB 编程题总结

LY 57 7: 已知f11,n1f20,n2f31,n3

fnfn12fn2fn3,n3求f中:

1~f100最大值、最小值、各数之和。

f(1)=1; f(2)=0; f(3)=1; for i=4:100

f(i)=f(i-1)-2*f(i-2)+f(i-3); end max(f) min(f) sum(f)

1. 编程计算3+33+333+3333+„..前10项之和。

m=3;n=0;s=0; for i=1:10 n=10*n+m; s=s+n; end s

2. 编程求

1-1/2+1/3-1/4+.......+1/99-1/100的值。

s=0;

for i=1:100

s=s+(-1)^(i-1)*1/i; end

s3. 编写程序,求 1-3+5-7+„-99+101的值。

s=0;j=1;

for i=1:2:101

s=s+(-1)^(j-1)*i; j=j+1; end

s4. 编写程序,输出从公元1000年至2000年所有闰年的年号。判断公元年是否为闰年的条件是:

(1) 公元年数如能被4整除,而不能被100

整除,则是闰年;

(2) 公元年数能被400整除也是闰年。

for year=1000:2000

if(mod(year,4)==0&mod(year,100

)~=0)|mod(year,400)==0 year end end

5.将10个整数输入到一个数组中,然后再将

其按输入顺序的逆序进行排列并输出。

for i=1:10

a(i)=input('x='); end

for i=10:-1:

1 a(i)end

6.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少m?第10次反弹多高?

Sn=100;Hn=Sn/2; for n=0:10

Sn=Sn+2*Hn; Hn=Hn/2; end Sn Hn

7.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,见只剩一个桃子了。求第一天共摘多少桃子。

day=9;x=1; while(day>0) x=(x+1)*2; day=day-1; end x

LiYang

第 4 页 / 共 6 页

MATLAB 编程题总结

LY 附:

matlab期中试卷及答案

一、计算题

1.已知A=[1 2 3; 4 5 6; 7 8 9],B=[1 5 0;1 0 3; 0 3 4],试写出下列指令运行的结果: A<=2=

,A*B=

,A(1, :)*A(:, 3)=

2.设a= [1,-2,3; 4,5,9; 6,3,-8], b= [2,6,1; -3,2,7; 4,8,-1]。

(1)求a.*b

(2)求a.^2

(3)求 2-a

(4)求a(1:2,2:3)

(5)求min(a(:))

二、计算下列程序运行的结果

1、mysum=0; i=1;

while (i<100)

mysum=mysum+i ;

i=i+1 ;

end

mysum

2、A=[1,2,3;4,5,6;7,8,9];

C=[A;[10,11,12]];

D=C(1:3,[2 3]);

E=C(1:3,:)

写出C、D、E的结果

3、x=[0,1,0,10,1,0,1];

for i=1:7 if x(i)==0

x(i)=1;

else

500≤price<1000

5%折扣

x(i)=0;

1000≤price<2500

8%折扣

end

2500≤price<5000

10%折扣

end 5000≤price

14%折扣

x

输入所售商品的价格,求其实际销售价格。

4、c=6;d=[4,0,6;0,8,0]; (3)fibonccci数组的元素满足fibonacci规则:

x=d & c ak+2=ak+ak+1,(k=1,2,…);且a1=a2=1。现要求求出该数组中

y=d|c 第一个大于10000的元素。

z=~d

(4)计算1!+2!+3!+4!+5!+6!+„+n!值的程

写出x、y、z的结果

序。(n可以自由输入)

三、(1) 建立M函数完成下列运算(函数名为

五、分析下面程序运行后s1,n1,s2,n2,m的值.

jygxfun)

s1=0;s2=0;n1=0;n2=0

f(x,y,z)ze(xy)xyzsin(xy3z)x=[1,-4,-8,3,10,-9,7,-3,10, 8,-5,-2,2,0 ];

m=length(x); (2)若x=1,y=2,z=3,采取调用jygxfun方式计算

for i=1:m f值, 试编程.

if x(i)<0

四、(1)编程计算下面问题, x值由键盘输入

s1=s1+x(i); 2n1=n1+1;

yx1,x1else x2,1x

1s2=s2+x(i);

n2=n2+1;

(input语句).

x21,x1 end

end

(2)某商场对顾客所购买的商品实行打折销

s1,n1,s2,n2,m 售,标准如下(商品价格用price来表示):

2.(1)

price<200

没有折扣

2 -12

200≤price<500

3%折扣

a.*b= -12 10

63 24

24

LiYang

第 5 页 / 共 6 页

MATLAB 编程题总结

LY (2) 1

9 a.^2= 16 25 81 36 9

64 (3) 2-a= 1

4 -1 -2

-3

–7 (4) -4

-1

10 -2

3 a(1:2,2:3)= 5

9

(5) min(a(:)) =-8 二

1、4950

2、C =1

9 10

12 D =

9 E = 1

3、x =1

0

0

0

4、x = 1

0

0

0

y = 1

1 z = 0

0

0

三、解:(1)

function [f]=jygxfun(x,y,z)

f=z*exp(-(x+y))+sqrt(x+y+z)*sin(x+y+3*z); (2)

x=1;y=2;z=3; f= jygxfun(x,y,z)

四、(1)解: x=input('x=?');

if x>=1

y=x^2+1; else if x

y

(2)price=input('请输入商品价格'); switch fix(price/100)

0 case {0,1}

%价格小于200 rate=0;

case {2,3,4} %价格大于等于200但小于500

rate=3/100;

case num2cell(5:9) %价格大于等于500但小于1000

rate=5/100;

case num2cell(10:24) %价格大于等于1000但小于2500

rate=8/100;

case num2cell(25:49) %价格大于等于2500但小于5000

rate=10/100;

otherwise %价格大于等于5000 rate=14/100; end

price=price*(1-rate) %输出商品实际销售价格 (3)

(4)n=input('n=')

s=0

for i=1:n

m=1

for j=1:i

m=m*j;

end

s=s+m; end s

五、s1= -31;n1=6;s2=41;n2= 8;m= 14

LiYang

第 6 页 / 共 6 页

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值