留着练手的编程题!

1.      写出n!的算法。

public staticvoid main(String []args){

    long   n = 5;

    System.out.pringln(doFactoria(n));

}

public  static long doFactorial(n){

    if(n<1){

        System.out.println(“ERROR”);

        return 0;

}elseif(n==1||n==2){

    return n;

}else{

    return n*doFactorial(n-1);

}

 

}

2.      写一个排序算法,将10个1-100随机数字进行排序。

public class SelectSort{

    publicstatic void selectionSort(int [] number){

       for(inti = 0; i < number.length; i++){

           intm = i;

           for(intj = i + 1; j < number.length; j++){

              m= j;

}

if(i != m){

    swap(number, i, m);

}

}

}

//用于交换数组中索引为i、j的元素

private static voidswap(int[] number, int i, int j){

    int t;

    t = number[i];

    number[i] = number[j];

    number[j] = t;

}

public static voidmain(String args[]){

    //定义一个数组

    int [] num = new int[10];

    for(int I = 0; I < number.length; i++){

       num[i] = (int)(Math.random() * 100) + 1;

}

//排序

selectionSort(num);

for(int i=0; i<num.length;i++){

    System.out.println(num[i]);

}

}

}

 

3.      请用java语言编写一个完成冒泡算法的程序?

 

 

 

 

 

4.      有一数组a[1000]存放了1000个数,这1000个数取自1-999,且只有两个相同的数,剩下的998个数不同,写一个搜索算法找出相同的那个数的值。

参考答案:下列代码中使用了二分搜索算法实现了从数组a[1000]中,查找两个相同的数,代码如下所示

5.      现有一个32位的整形变量value和一个32个元素的数组a[32],要求:1、对value随机复制;2、让数组a[n]的值等于value’位n’的值,0<=n<=31。举例:如果value的“位0”(Bit0)=0;如果value的“位10”(Bit10)=1,那么a[10]=1。

6.      有1-100共一百个自然数,已随机放入一个98个元素的数组a[98]。要求写出一个尽量简单的方案,找出没有被放入数组的那2个数,并在屏幕上打印这2个数。注意:程序不用事先自然数随机放入数组的过程。

public static void main(String [] args){

    int[]b = new int[]{存入98个随机的1-100的整数}

    int[] a = new int[100];

    for(intt:b){

       a[t-1]=t;

        System.out.println(t+1);

}

}

7.      用1,2,2,3,4,5六个数字,用Java写一个main函数,打印出所有不同的排列,如:512234,412345等,要求:”4”不能再第三位,”3”与”5”不能相连。

8.      编写一个命令行程序,提示让用户输入2个整数,然后计算这2个整数之间能被5整除的所有整数的和,并打印显示?

9.      编写一个命令程序,提示让用户名和密码。如果用户名和密码都是admin,则显示登陆成功;如果不是则显示登陆失败,让用户重新输入。如果用户连续3次认证失败,则锁定终止程序?

10. 写Java代码,打印如下的杨辉三角:

1

1      1

1                2                1

1                3                3                1

1                4                6                4                1

1                5                10              10              5                1

11. 使用Java完成快速排序算法。

12. 编程:设有n个人围成一圈,从第一个开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到m个人又出列,反复直到全部出列,设n个人的编号分别为1,2,…n,打印出出列的顺序;

13. 写 一段小程序检查数字是否为质数?

14.   1到100自然数,放入到a【99】这个数组中,写一个函数找到没有被放进数组的那个数字?

15. 找出101到200自然数中的质数,for循环越少越好(用2个for循环)

16. 用数组实现一个栈(stack)至少有入栈方法push和出栈方法pop?

17. a、b、c为3个整形变量,在不引入第4个变量的前提下写一个算法实现a=b、b=c、c=a。

18. Java编程写出1000-2000可以被3整除的数?

19. 编程:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,加入兔子都不死,问每个月的兔子总数为多少?

20. 查找有哪几种方法:试写其中一种方法的小例子。

    顺序查找、二分查找、分块查找、二叉排序树查找等。下面是按照顺序查找的案例(顺序查找适合于存储结构为顺序存储或链接存储的线性表)

21. 写代码判断两个数字(x、y)大大小,并返回大树能否被小整数整除?

22. 将一个整形十进制数转化为二进制数(不能使用Java的类库)
23. 编一个函数1000以内,可以被5整除,可以被7整除,但不能被5和7同时整除,输出符合结果的所有数?

24. 生成一个六位数的验证码 包括大写字母、小写字母和数字?

25. 有这样一类数字,他们顺着看和倒着看是相同的数,例如:121、656、2332等,这样的数字就称为回文数字。编写一个Java程序,判断从键盘接受的数字是否为回文数字。

26. 编写程序输出9*9乘法口诀。

27. 有5个人坐在一起,问第5个人多少岁?他说比第4个人大两岁,问第四个人多少岁?他说比第三个人大两岁,问第三个人多少岁?他说比第三个人大两岁,问第二个人多少岁?他说比第一个人大两岁,问最后一个人多少岁?他说10岁,请问第5个人多大?(递归实现)

28.   公鸡每只3元,母鸡每只5元,小鸡三只一元,问100元买100只鸡有几种买法?

29. 编程:有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问第几天能卖完?

30. 编写一段程序,用来创建和迭代一个List

31. 编写一段程序,用来创建和迭代一个Set

32. 编写一段程序,用来创建和迭代一个Map

33. 请通过一次循环,清除掉一个ArrayList中的每个元素。

34. 设计一个程序基于Map泛型完成10个英文单词的翻译。

35. 编写一个List集合,存储通讯录。(同学姓名和电话)并输出通讯录

36. 有两个List<Integer>,写一个方法要求合并这两个结合,不能有重复的,不能用集合的sort等方法,而且要求中间的数字最大,两边逐渐减小。例如(m是集合的size)(get(0)<get(m-1),get(1)<get(m-2))。

37. 将文件夹a(包括其下所有子文件夹和文件)复制到文件夹b下。要求:使用10个线程同时进行,每一个线程独立处理一个文件。

38. 分别用Java中多线程的两种方法实现:输出字符串"Hello",要求每间隔1s输出一个字母。

39. 写一个简单的socket实现聊天功能的例子(不要求界面,只实现数据传输)一个主服务端,一个客户端。

40. Java Socket编程,从服务器读几个字符,再写入本地控制台。

41. 编写程序将由数字及字符组成的字符串中的数字截取出来被按顺序输出,例如:"ABC127GMNQQ2049PN5FFF"输出的结果应该为01234579。

42. String s = "abcdefghigklmnopqrstuvwxyz"; 编写一段程序,实现"mnop"输出。

43. 在Java代码中有一个字符串Stringss = "abc,efgAA,12q,456,zA,KJD";在不使用split方法的情况下写一段代码实现按"," 拆分字符的功能,并输出结果。

44. 从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,最后把已处理的字符串(应不含标点符号)扔按行重新存入字符串数组xx中,最后把结果xx输出到文件out.dat中。

45. 编写程序,计算任意两个日期之间的天数。

46. 请使用Java语言定义一个具备栈功能的类,实现以下接口。

public interface StackInterface{

         void push(Object value):

         Object pop();

         Boolean isEmpty();

}

47. 编写一个程序,用户输入任何一个字符串以后,反转输出其结果。其运行结果如下所示:

a)       请输入一个字符串:我在学习Java程序设计

b)      您输入了:计设序程avaJ习学在我。

48. 请用面向对象的思想设计一个计算机程序,请写出程序框架(主要使用的类和方法)

49. 写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如("我ABC",4)应该截为"我AB", 输入(“我ABC汉DEF”, 6)应该输出为"我ABC"而不是"我ABC+汉的半个"

50. 日期和时间

c)       如何取得年月日、小时分秒

d)      如何取得从1970年到现在的毫秒数

e)      如何取得某个日期的当月的最后一天

f)       如何格式化日期

51. 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数?

52. 写一个函数,要求输入一个字符串和一个字符的长度,对该字符串进行分割?

53. 设计4个线程,其中两个县城每次对j增加1,另两个县城对j每次减少1;写出程序?

54. 剔除下面字符的","。例如:字符串"A,B, C, D, E, F" ,剔除的返回结果为"ABCDEF"

55. 编写一个命令行程序,提示输入2个字符串,找出2串字符串中是否存在相同的长度为3的字符串,比如字符串"abc12uwks"和字符串"q72bnabc00",则把abc找出来。

56. 现有一个数组intdata_arr[]={12,31,56,23,277,1,43,65,4,99},已完成如下代码,请在注释处增加一段代码,实现这样的功能:将data_arr数组的内容先写入一个名为"temp.dat"文件中,再重写将该文件的内容读出,能逆序将文件的内容输出至控制台(形如99,4,65,1,27,23,56,31,12)

答案:

57. 现有一个程序需要记录运行中的关键信息,要求在内存中保留最近的n条信息供查询。保存的信息不需要做持久化处理,要求提供一个独立的日志类,负责对日志的写入和读取,请列出该类所应具有的方法并写出大致的实现代码。

注:持久化指的是将数据存入数据库或存为文件。读取日志时只要求能一次性读出现有的所有记录。

58. 数学中,一个复数包容着一个实部(Real)和一个虚部(Imaginary),请设计一个Complex类,它的实例代表一个复    数,并且用户可以这样使用它:

//创建一个实部为3,虚部为4的复数

Complex obj = new Complex(3,4);

//Complex对象具备按照数学中复数的习惯表示形式输出的能力

System.out.println(obj);//输出:3+41

a)      我们可以调用Integer.parseInt()方法将一个字符串转化为int类型,但当要转换的字符串不是一个有效的数字时(比如a123),此方法会抛出一个NumberFormatException?要求编写一个程序,当程序运行时让用户从键盘上输入一个字符串,代表考试成绩,然后调用Integer.parseInt()方法将其转换为int类型,并给出是否通过的提示,控制台交互过程如下:

g)       请输入您的考试成绩:76

h)      恭喜您通过了考试

由于无法控制用户的输入,因此会出现两种情况

a)     用户输入一个无法转换为int的字符串;

b)    用户输入的数字不在[0-100]区间内。

请设计一个自定义的异常类InvalidScoreException,当出现上述异常情况时抛出此异常对象。要求程序运行时,对用户的错误输入能给以明确的提示。

         首先,自定义异常处理类InvalidScoreException,代码如下:

         然后,当用户输入了一个无法转换为int类型的字符串或用户输入的数字不在[0,100]区间内时抛出自定义异常InvalidScoreException,代码如下所示:

59. 设计一个类,实现如下图所示的状态机?

提示:上图说明,当使用new关键字创建此类对象时,对象居于Created状态(这是初始状态),这时,调用对象的open()方法,对象转换到Opened状态,再调用对象的close()方法,对象转入"Closed"状态,这是终止状态

60. 一个图书管理系统的面向对象设计方案如下图所示。

Book代表书,有Name(书名)、Author(作者名)、Price(单价)和IsBorrowed(是否被借出)四个属性。

      类Library代表图书馆,其内部字段books用于保存图书馆中所有的书。它的FindBook()方法依据书名查找同名的书(可能有多本),另一个GetAllBooks()方法获取图书馆所有的详细信息

       类Reader代表读者,Name字段代表其姓名,读者可以ReturnBook(还书)和BorrowBook(借书)

       请编写完成以下工作:

1、        用java编程实现上述三个类。

2、        在main()方法中书写以下的测试代码:

(1)      创建一个Library类的实例myLittleLibrary,其中预存3本书

a)       Java程序设计,张三著,45元

b)      Java核心技术,李四著,50元。

c)       Java程序设计,王五著,38元

(2)      显示图书馆中所有图书的信息,输出样例如下

a)       Java程序设计,张三著,45元,可借

b)      Java核心技术,李四著,50元,可借

c)       Java程序设计,王五著,38元,未还

(3)      创建一个Reader类的实例oneBeautifulGirl,她先在myLittleLibrary中查找《Java程序设计》

(4)      oneBeautifulGirl借了张三著的那本书,现在显示图书馆中所有图书的信息。

(5)      oneBeautifulGirl把书还了,再次显示图书馆中图书的信息。

注意:在满足题目要求实现功能的前提下,你可以依据自己的考虑修改系统设计方案(比如给某个类添加或修改类的方法,甚至是添加新的类)

61. 读取txt文件内容

i)        文件内容大致如下:

                      i.             00001 张三 计算机系  男

                    ii.             00002 李四 外语系              女

j)        读取文件后对内容进行整合,按院系分类输出,格式为:

                      i.             计算机系

                    ii.             00001 张三 男…

                 iii.             外语系

                  iv.             00002 李四  女…

62.  采用Java多线程技术(wait和notify),设计实现一个符合生产者和消费者问题的程序,对一个对象(枪膛)进行操作,其最大容量是20颗子弹,生产者线程是一个压入线程,它不断向枪膛中压入子弹;消费者线程是一个射出线程,它不断从枪膛中射出子弹?

63. 写一个线程,每隔10秒钟标准输出到屏幕一个"helloworld"打印10此以后退出。

64. 下面两个方法有什么区别?

public synchronized voidmethod(){}

public void method2(){

       synchronized(obj){}

}

65. 如何取1970到现在的毫秒数?

66. 如何格式化日期?

67. 给SomeInputStream类的skip函数添加Java注释,需要添加函数本身功能(流指针向后偏移指定长度),作者(答题者姓名),异常,参数,函数返回,函数定义最早出现的版本。

答案:

68. 有数组[5,0,-5,2,-4,5,10,3,-5,2,-4,3,4,9,1],请写出代码输出每个数的频率数(正负数算一个数),如下面结果

k)       5出现4次

l)        0出现1次

69. 请写出一个Test类包含divide方法,该方法实现两个整数相除精确返回四舍五入到百分位的数值。

70. 将某网页评论提交给后台的字符串str中,如果包含有"\", "<", ">" , "=" 四中符号的,过滤掉以后放置系统被执行恶意代码,写出Java代码。

71. 现在给你一个新一代的身份证号,默认为18位号码:如果该号码是15位的话,请在第6位后面加上19,并在末尾加上x;如果是18位则保持不变。

72. 编写一个方法:一个字符串数组String s[]={"A","B","C","D","E","F"},请随机生成一个数,比如:生成的数为2,则输出数组中随机两个元素的组合B、E或者A、C等;生成数为3,就为是哪个随机元素组合。

73. 请编写一个对于Java例外处理的完整的程序。

首先新建自定义异常类NotNumberException,该异常可以在某个字符串不为数字组成的情况下抛出,代码如下。

         然后,新建类ExceptionDemo,在类中添加parseInt方法,该方法用户将字符串转换成整数类型,当该字符串不是由数字组成时,使用throw抛出上面自定义异常NotNumberException,并且在方法声明处,使用throws声明抛出该异常,然后在main方法中调用parseInt方法时,使用try-catch处理异常,代码如下。

74. 编写自定义异常,处理输入字符串abc抛出异常,其他不抛出。

 

 

一、考试基本要求面向对象程序设计考试是为了测试学生是否具备面向对象编程思想和初步应用Java语言编程的能力的考试。考生要求达到以下“知识”和“技能”两方面的目标。 【知识方面】:熟练掌握面向对象程序设计的基本概念,熟练掌握Java语言的编程语法和常用类库的使用。【技能方面】:能正确阅读和理解Java程序,能编写和调试一般功能需求的Java程序。二、考试方式、时间、题型及比例1.考试方式:闭卷笔试2.考试时间:150分钟3.题型比例:总分值为200分,题型为选择20%、简答题20%、程序阅读20%、程序综合设计40%。三、考试内容及考试要求第一章 Java语言概述 [知识要点]: Java语言的产生、应用前景和特点;Java虚拟机及Java运行系统; Java语言和C++语言的相同及不同之处;熟练掌握Java应用程序的编辑、编译和运行过程。 [考试要求]: 1.了解:Java 语言的产生、应用前景和特点; 2.了解:Java虚拟机及Java运行系统; 3.掌握:Java 语言和 C++语言的相同及不同之处; 4.掌握:Java 应用程序的编写、编译和运行过程。 第二章 Java 语言基础 [知识要点]:Java 语言的数据类型;变量和常量;正确书写表达式;数组;流程控制。 [考试要求]: 1.了解:数据类型的转换(自动类型转换和强制类型转换);运算符的优先级和结合性; 2.掌握:Java语言各种数据类型; 3.掌握:Java语言算术运算符、关系运算符、逻辑运算符、位运算符和复合赋值运算符的功能及使用; 4.掌握:Java语言变量、常量的使用及其运算操作; 5.掌握:Java语言流程控制语句的功能及使用;6.掌握:Java数组的定义;数组的初始化和数组的应用;二维数组的应用。 第三章 面向对象编程[知识要点]:面向对象的基本概念;面向对象的软件开发过程。 [考试要求]: 1.了解:面向对象的概念;2.掌握:类的创建与使用;3.掌握:方法的定义和使用;4.掌握:对象的基本操作方式;5.掌握:构造方法的定义和使用;6.掌握:this关键字和static关键字的使用;7.理解:成员变量和局部变量的区别。第四章 面向对象的特性 [知识要点]:掌握面向对象的三大特性。 [考试要求]: 1.理解:封装的概念; 2.理解:继承的概念;3.理解:多态的概念;4. 掌握:final关键字的使用5. 掌握:Lambda表示式的使用第五章 抽象类和接口 [知识要点]:抽象类与接口的基本概念以及实际应用。 [考试要求]: 1.掌握:抽象类和接口的使用;2.掌握:Java中的内部类; 2.了解:单例模式; 3.了解:模板设计方法; 第六章 Java异常 [知识要点]:Java异常的基本概念;Java异常处理机制;自定义Java异常类的应用。 [考试要求]: 1.理解:异常的概念; 2.掌握:异常的处理机制;3.掌握:自定义异常的使用第七章 Java常用类[知识要点]:应用Java语言的工具类库。 [考试要求]: 1.掌握:字符串相关类的使用; 2.掌握:System类与Runtime类的使用;3.掌握:Math类与Random类的使用;4.掌握:日期类的使用。第八章 集合框架[知识要点]:应用Java语言的集合框架解决具体问题。 [考试要求]: 1.掌握:List、Map、Set集合的使用; 2.掌握:集合遍历的方法;3.掌握:泛型的使用;4.掌握:集合工具类的使用;5.掌握:Stream API的使用。第九章 Java IO[知识要点]:Java 输入输出与文件处理。 [考试要求]: 1.掌握: File类及其用法; 2.掌握:操作字节流和字符流读写文件;3.了解:其他IO流;4.了解:NIO的概念及其用法;5.了解:常见字符编码。第十章 图形用户界面[知识要点]:Java的Swing组件、容器、布局管理器的概念;图形界面上的事件响应。 [考试要求]: 1.了解: AWT组件和Swing组件的联系和区别; 2.掌握:常用的Swing组件的使用;3.理解:常用的窗体和布局管理器;4.掌握:事件处理机制。第十一章 Java多线程[知识要点]:多线程的基本概念;创建和启动线程;线程的生命周期;多线程同步问题;多线程通信;线程池的概念。 [考试要求]: 1.了解: 进程和线程的区别; 2.掌握:创建线程的方法;3.理解:线程的生命周期及其状态转换;4.掌握:多线程的同步;5.掌握:多线程之间的通信;6.了解:线程池的使用。第十二章 Java网络编程[知识要点]:网络协议;使用Java开发网络程序。 [考试要求]: 1.了解:网络通信协议; 2.了解:UDP通信;3.了解:TCP通信;4.掌握:网络程序的开发。第十三章 JDBC编程[知识要点]:数据库基本概念;JDBC原理;应用JDBC接口操作数据库。 [考试要求]: 1.了解:JDBC原理; 2.掌握:Connection接口、Statement接口、ResultSet接口、PreparedStatement接口的使用;3.掌握:使用JDBC操作数据库。四、其他说明 1.此次考试为笔试考试,不能使用任何的编程机器; 2.所有程序阅读题、编程题或算法设计题均采用程序填空题方式完成。五、参考书目李松阳、马剑威.Java程序设计基础与实战(微课版),人民邮电出版社,2022年8月. ISBN: 9787115591746 根据这个考纲帮我生成三套试卷
03-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值