烟台南山学院计算机与电气自动化学院java实训报告.docx

上传人:b****5 文档编号:7506718 上传时间:2023-01-24 格式:DOCX 页数:30 大小:174.07KB
下载 相关 举报
烟台南山学院计算机与电气自动化学院java实训报告.docx_第1页
第1页 / 共30页
烟台南山学院计算机与电气自动化学院java实训报告.docx_第2页
第2页 / 共30页
烟台南山学院计算机与电气自动化学院java实训报告.docx_第3页
第3页 / 共30页
烟台南山学院计算机与电气自动化学院java实训报告.docx_第4页
第4页 / 共30页
烟台南山学院计算机与电气自动化学院java实训报告.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

烟台南山学院计算机与电气自动化学院java实训报告.docx

《烟台南山学院计算机与电气自动化学院java实训报告.docx》由会员分享,可在线阅读,更多相关《烟台南山学院计算机与电气自动化学院java实训报告.docx(30页珍藏版)》请在冰豆网上搜索。

烟台南山学院计算机与电气自动化学院java实训报告.docx

烟台南山学院计算机与电气自动化学院java实训报告

烟台南山学院计算机与电气自动化学院

Java程序设计实训报告

(2011~2012)学年第2学期)

 

姓名:

******

学号:

****************

专业:

计算机科学

班级:

1001班

指导教师:

翟芸

 

编程课程实训报告

日期

2012.6.11——2012.6.15

地点

67号楼E305机房

项目名称

Java程序设计实训

实训目的能力目标

增强学生对java语言的熟悉,增强对java编程工具的熟悉掌握程度,为今后进一步深入学习java语言打下一个坚实的基础。

实训要求:

1、实训期间每天登记考勤,作为实训成绩的一部分。

2、实训期间不能玩游戏、看电影、小说等做与学习无关的事。

如果有不遵守的同学将取消当天成绩。

3、每天的作业必须经过指导教师检查后才可以登录当天成绩。

4、完成整个实训以后,要求每人写出实训报告。

作为评定整个实训成绩的重要参考依据。

实训内容(过程及步骤)

第一题:

古典问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21....

importjava.util.Scanner;

publicclassTuzi{

publicstaticvoidmain(Stringargs[]){

inta=1,b=1;//a大前一个月,b前一个月

intcount=1;//当月

System.out.print("请输入要求的月份");

Scannersc=newScanner(System.in);

intmounth=sc.nextInt();

//前两个月都是1

if(mounth>0&&mounth<=2)

System.out.println("兔子在"+mounth+"月有"+count+"只");

//3个月以后是当月的为前两个月的和,采用递推的方法算出结果

if(mounth>2)

{

for(inti=0;i

{

count=a+b;

a=b;

b=count;

}

System.out.println("兔子在"+mounth+"月有"+count+"只");

}

}

}

第二题:

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

程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数。

publicclassSushu{

publicstaticvoidmain(Stringargs[]){

inti=101;

booleantemp=true;//true表示是素数,先假设他是素数

intcount=0;//一个累加器,控制换行

for(;i<=200;i++)

{

for(intt=2;t<=Math.sqrt(i);t++)

{

//如果能被整除,则不是素数并且跳出循环

if(i%t==0)

{temp=false;break;}

}

if(temp)

{

System.out.print(i+"");

count++;

//四个数一行

if(count%4==0)

System.out.println();

}

temp=true;//一个数计算完毕,再次假设他是素数

}

}

}

第三题:

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

publicclassShuixianhua{

publicstaticvoidmain(Stringargs[]){

intone,two,three;

//one个位,two十位,three百位

for(inti=100;i<1000;i++)

{

one=i%10;

two=(i/10)%10;

three=i/100;

if(i==(one*one*one+two*two*two+three*three*three))

System.out.println(i);

}

}

}

第四题:

将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

程序分析:

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

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

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

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

importjava.util.Scanner;

classZhishu{

//判断是不是素数的一个构造方法

publicbooleanzhishu(inttemp){

booleana=true;//先假设他是素数

for(inti=2;i<=Math.sqrt(temp);i++)

if(temp%i==0)

{a=false;break;}//如果他能被整除了,那么他就不是素数,中断循环,得到结果

returna;//返回结果

}

}

classFenjie{

publicstaticvoidmain(Stringargs[]){

Zhishua=newZhishu();

//输入计算的整数

System.out.print("请输入要求的整数");

Scannersc=newScanner(System.in);

intnum=sc.nextInt();

System.out.print("分解质因数后是"+num+"=");

//若果他是质数,则输出它本身

if(a.zhishu(num))

System.out.println(num);

//若果他不是质数,那么他肯定是有2个或者2个以上质因数

for(inti=2;i<=Math.sqrt(num);i++)//循环找他的质因数

{

if(a.zhishu(i)&&(num%i==0))//和循环一起构成找他的质因数

{

System.out.print(i);//输出第一个最小质因数

if(i!

=num)

//若果他不等于要求的最终数字,那么他就被他自身整除当前质因数的结果代替

{num=num/i;System.out.print("*");}

//由于还没有输出完毕,当然最后还需要输出一个*号;

i--;//可能他还能被这个质因数整除,所以i--继续计算;

}

}

System.out.print(num);

//经过被质因数连续整除后,他便成了最后一个质因数,当然还得输出他

}

}

第五题:

利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

程序分析:

(a>b)?

a:

b这是条件运算符的基本例子。

importjava.util.Scanner;

publicclassChengji{

publicstaticvoidmain(Stringargs[]){

System.out.print("请输入要计算的成绩");

Scannersc=newScanner(System.in);

intgrade=sc.nextInt();

//(a>b)?

c:

d把d替换成要继续嵌套的算式

System.out.println("他的成绩是"+((grade>=90)?

'A':

(grade>=60)?

'B':

'C'));

}

}

第六题:

题目:

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

程序分析:

利用辗除法。

importjava.util.Scanner;

classRun{

privateintmax,min;

//初始化,分别把最小值和最大值区分开

Run(intmax,intmin){

if(max

{this.max=min;this.min=max;}

else

{this.max=max;this.min=min;}

}

//求最大公约数

publicintgetMax(){

inttemp=1;

intmax,min;

max=this.max;min=this.min;

while(temp!

=0){

temp=max%min;

max=min;min=temp;

}

returnmax;

}

//求出最小公倍数

publicintgetMin(){

intmin=this.min;

min=this.max*this.min/getMax();

returnmin;

}

}

publicclassMax{

publicstaticvoidmain(Stringargs[]){

System.out.print("请输入第一个整数");

Scannersc=newScanner(System.in);

intone=sc.nextInt();

System.out.print("请输入第二个整数");

inttwo=sc.nextInt();

Runa=newRun(one,two);

System.out.println("最大公约数是"+a.getMax()+"\n最小公倍数是"+a.getMin());

}

}

第七题:

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

第10次反弹多高?

publicclassQiu{

publicstaticvoidmain(Stringargs[]){

doublea=100;

doublesum=a;

for(inti=1;i<10;i++)

{sum+=a;a=a/2;}

System.out.print("经过"+sum+"米,高度为"+a/2+"米");

}

}

第八题:

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

都是多少?

1.程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

publicclassPai{

publicstaticvoidmain(Stringargs[]){

intcount=0;

for(inta=1;a<5;a++)

for(intb=1;b<5;b++)

for(intc=1;c<5;c++)

for(intd=1;d<5;d++)

{

if(a!

=b&&a!

=c&&a!

=d&&b!

=c&&b!

=d&&c!

=d)

count++;

}

System.out.print("共有"+count+"种排法");

}

}

第九题:

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

1.程序分析:

在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

请看具体分析:

publicclassZhao{

publicstaticvoidmain(Stringargs[]){

inta,b;

for(inti=0;i<=100000;i++)

{

a=(int)Math.sqrt(i+100);

b=(int)Math.sqrt(i+268);

if(a*a==i+100&&b*b==i+268)

System.out.print(i+"");

}

}

}

第十题:

输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:

以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

importjava.util.Scanner;

classJsuan{

privateinty,m,d,two,sum;//年月日,二月,总和;

Jsuan(inty,intm,intd){

this.y=y;

this.m=m;

this.d=d;

run();

}

//闰年计算

voidrun(){

if(y%400==0)

two=1;

elseif(y%100!

=0&&y%4==0)

two=1;

}

//去掉当月之后再计算

intbegin(){

for(inti=m-1;i>0;i--)

{

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)

sum+=31;

if(i==4||i==6||i==9||i==11)

sum+=30;

if(i==2)

sum+=28+two;

}

returnsum+d;

}

}

publicclassDiji{

publicstaticvoidmain(Stringargs[]){

System.out.println("输入年");

Scannersc=newScanner(System.in);

inty=sc.nextInt();

System.out.println("输入月");

intm=sc.nextInt();

System.out.println("输入日");

intd=sc.nextInt();

Jsuana=newJsuan(y,m,d);

System.out.println("这是第"+a.begin()+"天");

}

}

第十一题:

题目:

输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:

我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

importjava.util.Scanner;

classRun{

publicintone,two,three;

inttemp;

Run(){

System.out.println("输入第一个数");

Scannersc=newScanner(System.in);

one=sc.nextInt();

System.out.println("输入第二个数");

two=sc.nextInt();

System.out.println("输入第三个数");

three=sc.nextInt();

if(one>two)

temp=one;one=two;two=temp;

if(one>three)

temp=one;one=three;three=temp;

if(two>three)

temp=two;two=three;three=temp;

System.out.println(one+"<"+two+"<"+three);

}

}

classPaixu{

publicstaticvoidmain(Stringargs[]){

Runa=newRun();

}

}

第十二题:

输出9*9口诀。

1.程序分析:

分行与列考虑,共9行9列,i控制行,j控制列。

publicclassJ6{

publicstaticvoidmain(Stringargs[]){

for(inti=1;i<10;i++)

{

for(intj=1;j<=i;j++)

System.out.print(j+"×"+i+"="+j*i+"");

System.out.println();

}

}

}

第十三题:

猴子吃桃问题:

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

程序分析:

采取逆向思维的方法,从后往前推断。

publicclassHou{

publicstaticvoidmain(Stringargs[]){

intsum=1;

for(intday=10;day>1;day--){

sum=++sum*2;

}

System.out.println("总共摘了"+sum+"个桃子");

}

}

第十四题:

题目:

两个乒乓球队进行比赛,各出三人。

甲队为a,b,c三人,乙队为x,y,z三人。

已抽签决定比赛名单。

有人向队员打听比赛的名单。

a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

classRun{

publicStringshow(intx){

if(x==0)

return"和x比";

if(x==1)

return"和y比";

if(x==2)

return"和z比";

return"";

}

}

publicclassTest28{

publicstaticvoidmain(Stringargs[]){

Runp=newRun();

for(inta=0;a<3;a++)

for(intb=0;b<2;b++)

for(intc=0;c<3;c++)

if(a!

=b&&b!

=c&&a!

=c&&a!

=0&&c!

=0&&c!

=2)

System.out.print("a"+p.show(a)+"b"+p.show(b)+"c"+p.show(c));

}

}

第十五题:

有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

程序分析:

请抓住分子与分母的变化规律。

publicclassF10{

publicstaticvoidmain(Stringargs[]){

doublea=2,b=3,c;

doublex=1,y=2,z;

doublesum=0;

sum=a/x+b/y;

for(inti=3;i<=20;i++)

{

c=a+b;a=b;b=c;

z=x+y;x=y;y=z;

sum+=c/z;

}

System.out.println(sum);

}

}

第十六题:

求1+2!

+3!

+...+20!

的和

程序分析:

此程序只是把累加变成了累乘。

publicclassJie{

publicstaticvoidmain(Stringargs[]){

longsum=0;

longcount=1;

for(inti=1;i<=20;i++)

{

count*=i;//当前阶乘值

//System.out.println("!

"+i+"="+count);

sum+=count;//当前和

//System.out.println("sum="+sum);

}

System.out.println("sum="+sum);

}

}

第十七题:

利用递归方法求5!

程序分析:

递归公式:

fn=fn_1*4!

classRun{

longrun(longx){

if(x>1)

returnx*run(x-1);

else

returnx;

}

Run(longn){

System.out.print(n+"!

="+run(n));

}

}

publicclassDitui{

publicstaticvoidmain(Stringargs[])

{

Runa=newRun(5);

}

}

第十八题:

有5个人坐在一起,问第五个人多少岁?

他说比第4个人大2岁。

问第4个人岁数,他说比第3个人大2岁。

问第三个人,又说比第2人大两岁。

问第2个人,说比第一个人大两岁。

最后问第一个人,他说是10岁。

请问第五个人多大?

publicclassW3{

publicstaticvoidmain(Stringargs[]){

inta=10;

for(inti=1;i<=4;i++)

{

a+=2;

}

System.out.println(a+"岁");

}

}

第十九题:

给一个不多于5位的正整数,要求:

一、求它是几位数,二、逆序打印出各位数字。

importjava.util.Scanner;

classRun{

intwei;

privateintx;

//求位数

voidW(intx){

intcount=0;

for(;x>0;x/=10)

count++;

wei=count;

}

//用连除法球逆序输出

voidNi(){

intwei=this.wei;

for(;wei>0;wei--)

{

System.out.print(x%10);

x/=10;

}

}

Run(intx){

this.x=x;

W(x);

}

}

publicclassTest34{

publicstaticvoidmain(Stringargs[]){

System.out.print("请输入要求的五位以内正整数");

Scannersc=newScanner(System.in);

intnum=sc.nextInt();

Runa=newRun(num);

System.out.println("它共有"+a.wei+"位数");

System.out.print("逆序输出为");

a.Ni();

System.out.println();

}

}

第二十题:

一个5位数,判断它是不是回文数。

即12321是回文数,个位与万位相同,十位与千位相同。

importjava.util.Scanner;

classRun{

Run(intx){

if(x%10==x/10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1