Java基础编程经典练习题

2017 年 Java基础编程经典练习题 50 道

【程序 1】

题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月

又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

【程序 2】

题目:判断 101-200 之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数 ) ,如果能被整除, 则表明

此数不是素数,反之是素数。

【程序 3】
题目:打印出所有的 " 水仙花数 ",所谓 " 水仙花数 "是指一个三位数,其各位数字立方和
等于该数本身。例如: 153 是一个 " 水仙花数 ",因为 153=1 的三次方+ 5 的三次方+ 3 的
三次方。

【程序 4】

题目:将一个正整数分解质因数。例如:输入 90,打印出 90=233*5 。

程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:

(1) 如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。

(2) 如果 n <> k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商 ,作为新的正整数你 n,重复执行第一步。

(3) 如果 n 不能被 k 整除,则用 k+1 作为 k 的值 ,重复执行第一步。

【程序 5】

题目:利用条件运算符的嵌套来完成此题:学习成绩 > =90 分的同学用 A 表示, 60-89 分之

间的用 B 表示, 60 分以下的用 C 表示。

【程序 6】

题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。

/** 在循环中, 只要除数不等于 0,用较大数除以较小的数, 将小的一个数作为下一轮循环的

大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为 0,返回较大

的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。 * /

【程序 7】

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

【程序 8】

题目:求 s=a+aa+aaa+aaaa+aa…a的值,其中 a 是一个数字。例如 2+22+222+2222+22222( 此
时共有 5 个数相加 ),几个数相加有键盘控制。

【程序 9】

题目:一个数如果恰好等于它的因子之和,这个数就称为 " 完数 " 。例如 6=1 + 2+ 3.编

程 找出 1000 以内的所有完数。

【程序 10】

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

【程序 11】

题目:有 1、2、3、4 四个数字, 能组成多少个互不相同且一个数字中无重复数字的三位数?

并把他们都输入。

【程序 12】

题目:企业发放的奖金根据利润提成。利润 (I) 低于或等于 10 万元时,奖金可提 10%;利润

高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可可提成 7.5%;20 万到 40 万之间时,高于 20 万元的部分,可提成 5%;40 万到 60 万之间时

高于 40 万元的部分, 可提成 3%;60 万到 100 万之间时, 高于 60 万元的部分, 可提成 1.5%,高于 100 万元时,超过 100 万元的部分按 1%提成,从键盘输入当月利润,求应发放奖金总数?

【程序 13】

题目: 一个整数,它加上 100 后是一个完全平方数, 再加上 168 又是一个完全平方数,请问该数是多少?

【程序 16】

题目:输出 9*9 口诀。

【程序 17】

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩

下 的一半零一个。 到第 10 天早上想再吃时, 见只剩下一个桃子了。 求第一天共摘了多少。

【程序 18】

题目:两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决

定比赛名单。有人向队员打听比赛的名单。 a 说他不和 x 比, c 说他不和 x,z 比,请编程序

找出三队赛手的名单。

【程序 19】

题目:打印出如下图案(菱形)






【程序 20】

题目:有一分数序列: 2/1, 3/2, 5/3, 8/5, 13/8,21/13… 求出这个数列的前 20 项之和。

p

【程序 21】

题目:求 1+2!+3!+…+20! 的和

【程序 22】

题目:利用递归方法求 5!。

【程序 23】

题目:有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,
他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。 问第 2 个人, 说比第一个人大
两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?

数组章节作业 1、将一个数组中的元素倒排过来,不能新开一个数组的临时存储空 间,只能在原数组上改。 2、写一个类用来模拟栈这种数据结构,要求底层 使用数组存储数据, 并给出相应的进栈和出栈的方法。MyStack int arr[]; int count;//栈中元素个数 public MyStack(int n){ arr = new int[n]; } boolean push(int num){ if(count==arr.length){} arr[count++]=num; } int pop(){ if(count==0){ return -1;} return arr[--count]; } 3、实现在一个数组指定位置添加元素和删除元素的功能。 1、数组容量问题? 2、添加元素前后数组中元素的变化 3、删除元素前后数组中元素的变化 面向对象章节作业 1,写一个类,名为Animal,该类有两个私有属性, name(代表动物的名字),和legs(代表动物的腿的条 数)。并提供个两构造方法,一个无参,默认给name 赋值为AAA,给legs赋值为4;另一个需要两个参数, 分别用这两个参数给私有属性赋值。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 2,写一个类Person,包含以下属性:String name; int age; boolean gender; Person partner。 为Person类写一个marry(Person p)方法,代表当前 对象和p结婚,如若可以结婚,则输出恭贺信息, 否则输出不能结婚原因。要求在另外一个类中写一 个主方法,来测试以上程序。(下列情况不能结婚: 结婚年龄,男<24,女<22;3,某一方已婚) 3,写一个类,名为Animal,该类有两个私有属性,name(代表动物的名字),和legs(代表动物的腿的条数);要求为两个私有属性提供public 的访问方法。并提个两构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。要求在第一个构造方法中调用第二个构造方法。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 4,写一个类Fish,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Swimming!! 5,写一个类Bird,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值2;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Flying!! 6,写一个类Zoo,要求分别生成若干个Animal,Fish和Bird。并调用他们的属性和方法。 7,写Shape类,要求如下: 1.int类型属性x和y,分别表示图形的中心点坐标 2.无参构造器 3.构造器,对x和y进行初始化 4.draw()方法,输出"Shape draw" 写Circle类,继承Shape类,要求如下 1.double类型属性r,表示圆的半径 2.无参构造器,将r初始化为1.0 3.构造器,对r进行初始化 4.构造器,对x、y、r进行初始化 5.draw()方法,输出"draw in circle"和x,y,r的值 写Rectangle类,继承Shape类,要求如下 1.double类型属性height和width,表示矩形的高和宽 2.无参构造器,将height和width都初始化为1.0 3.构造器,对height和width进行初始化 4.构造器,对x、y、height、width进行初始化 5.draw()方法,输出"draw in rectangle"和x,y,height,width的值 使用ShapeTest类测试以上代码。 8,某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率 BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。 容器类章节作业 1、写MyStack类,实现栈功能。在类中使用ArrayList保存数据。 2、使用TreeSet和Comparator,写TreeSetTest1 要求:对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 3、使用TreeSet和Comparator,写TreeSetTest2 要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列 4、使用TreeSet和Comparator,写TreeSetTestInner 要求: 对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 1. 使用匿名内部类实现 2. 使用静态内部类实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值