留着练手的编程题!

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抛出异常,其他不抛出。

猜你喜欢

转载自blog.csdn.net/HC_MM/article/details/77923311