月度项目和支持训练题.docx
《月度项目和支持训练题.docx》由会员分享,可在线阅读,更多相关《月度项目和支持训练题.docx(11页珍藏版)》请在冰豆网上搜索。
![月度项目和支持训练题.docx](https://file1.bdocx.com/fileroot1/2022-11/16/769dc103-6479-4016-8271-5f7e87da7822/769dc103-6479-4016-8271-5f7e87da78221.gif)
月度项目和支持训练题
4月月度项目和支持训练题(java基础).doc
月度项目及支持训练题
月度项目:
五子棋游戏
1.语言和环境
A、实现语言:
Java
B、实现技术:
JavaSE
C、环境要求:
NetBeans5.x或Eclipse3.x;
JDK1.5以上
2.要求
实现一个简单的单机控制台版五子棋游戏,实现黑白子交互下棋和判断输赢的算法等功能。
功能和页面设计要求:
正确的打印棋盘信息界面,下完棋子之后要求刷新棋盘信息界面,可以提示黑白子哪一方该下棋子,如果其中一方有一个方向五子紧密相连,程序可以判断出该方获胜。
可以做一些简单的验证以保证程序运行的时候不出问题,例如:
1、不能重复在已有棋子的地方下棋,如果在已有棋子的地方下棋,要求有提示信息“该位置已存在棋子”。
2、下棋的坐标不能超出棋盘的范围,如果超出要求有提示信息“输入的坐标越界”。
黑色棋子用“@”符号,白色棋子用“O”符号。
3.推荐实现步骤
1.设计程序
创建项目:
在开发环境中建立项目fivechessgame,建立正确的包名com.handson.game和类名FiveChess、测试类名FiveChessGameTest(要求符合Java编码规范)。
正确输出棋盘信息界面:
A、设计棋盘信息界面,界面如下图1所示。
图1棋盘信息界面
B、正确提示黑白子哪一方该下棋子,若是输入坐标正确并且不越界(该坐标上没有棋子并且该坐标不越界),则刷新棋盘信息界面,如下图2所示。
图2棋子落下后的界面
C、如果坐标越界或者在已有棋子的地方下棋。
如下图3、4所示:
图3坐标越界提示界面
图4已有棋子提示界面
D、如果黑白方有一方在某一个方向上有连续5个棋子,则该方获胜,如下图5所示:
图5某一方获胜界面
4.案例目的
学习java数据类型、循环结构、分支结构、数组、二维数组、异常处理等。
5.案例难度
★★★★
6.案例覆盖技能点
1、1、Java数据类型
2、2、循环、分支结构
3、3、一维数组
4、4、二维数组
5、5、异常处理
7.推荐案例完成时间
1天
8.适用课程和对象
JAVA编程基础
9.注意事项:
请注意代码的软件书写,实体类、测试类的命名规范
10.提交内容:
1.程序提交源代码以及工程文件。
2.个人进度表
11.考核评价点
序号
功能列表
功能描述
分数
说明
1
正确显示界面
必做
2
正确下棋
必做
3
界面刷新
必做
4
判断输赢
必做
5
继续下棋
必做
6
越界验证
必做
7
位置验证
选做
8
下棋提示
选做
支持训练题:
算法程序设计
1.语言和环境
A、实现语言:
Java
B、实现技术:
JavaSE
C、环境要求:
NetBeans5.x或Eclipse3.x;
JDK1.5以上
2.要求
按照要求实现下列算法题目
题目1:
将一个数组int[]arr=newint[]{0,7,6,5,8,9,1,2,4,3};先进行由大到小排序,然后再逆序输出。
题目2:
利用条件运算符的嵌套来完成此题:
学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.1.程序分析:
(a>b)?
a:
b这是条件运算符的基本例子。
importjava.util.*;
publicclasslianxi05{
publicstaticvoidmain(String[]args){
intx;
chargrade;
Scanners=newScanner(System.in);
System.out.print("请输入一个成绩:
");
x=s.nextInt();
grade=x>=90?
'A'
:
x>=60?
'B'
:
'C';
System.out.println("等级为:
"+grade);
}
}
题目3:
输入三个整数x,y,z,请把这三个数由小到大输出。
1.1.程序分析:
我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
importjava.util.*;
publicclasslianxi15{
publicstaticvoidmain(String[]args){
inputfnc=newinput();
intx=0,y=0,z=0;
System.out.print("输入第一个数字:
");
x=fnc.input();
System.out.print("输入第二个数字:
");
y=fnc.input();
System.out.print("输入第三个数字:
");
z=fnc.input();
if(x>y){
intt=x;
x=y;
y=t;
}
if(x>z){
intt=x;
x=z;
z=t;
}
if(y>z){
intt=y;
y=z;
z=t;
}
System.out.println("三个数字由小到大排列为:
"+x+""+y+""+z);
}
}classinput{
publicintinput(){
intvalue=0;
Scanners=newScanner(System.in);
value=s.nextInt();
returnvalue;
}
}
题目4:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?
第10次反弹多高?
publicclasslianxi10{
publicstaticvoidmain(String[]args){
doubleh=100,s=100;
for(inti=1;i<10;i++){
s=s+h;
h=h/2;
}
System.out.println("经过路程:
"+s);
System.out.println("反弹高度:
"+h/2);
}
}
题目5:
企业发放的奖金根据利润提成。
利润(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%提成,从键盘输入当月利润I,求应发放奖金总数?
1.1.程序分析:
请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
importjava.util.*;
publicclasslianxi12{
publicstaticvoidmain(String[]args){
doublex=0,y=0;
System.out.print("输入当月利润(万):
");
Scanners=newScanner(System.in);
x=s.nextInt();
if(x>0&&x<=10){
y=x*0.1;
}elseif(x>10&&x<=20){
y=10*0.1+(x-10)*0.075;
}elseif(x>20&&x<=40){
y=10*0.1+10*0.075+(x-20)*0.05;
}elseif(x>40&&x<=60){
y=10*0.1+10*0.075+20*0.05+(x-40)*0.03;
}elseif(x>60&&x<=100){
y=20*0.175+20*0.05+20*0.03+(x-60)*0.015;
}elseif(x>100){
y=20*0.175+40*0.08+40*0.015+(x-100)*0.01;
}
System.out.println("应该提取的奖金是"+y+"万");
}
}
题目6:
求100之内的素数,保存在数组中。
题目7:
打印九九乘法表
publicclasslianxi16{
publicstaticvoidmain(String[]args){
for(inti=1;i<10;i++){
for(intj=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+" ");
if(j*i<10){System.out.print("");}
}
System.out.println();
}
}
}
题目8:
指定年月日,输出该天是该年中的第几天。
a)a)例如输入2003年1月5日,则输出是第5天。
b)b)例如输入2000年3月10日,则输出是第70天。
c)注意二月份天数的计算
importjava.util.*;
publicclasslianxi14{
publicstaticvoidmain(String[]args){
intyear,month,day;
intdays=0;
intd=0;
inte;
inputfymd=newinput();
do{
e=0;
System.out.print("输入年:
");
year=fymd.input();
System.out.print("输入月:
");
mo