烟台南山学院计算机与电气自动化学院java实训报告_第1页
烟台南山学院计算机与电气自动化学院java实训报告_第2页
烟台南山学院计算机与电气自动化学院java实训报告_第3页
烟台南山学院计算机与电气自动化学院java实训报告_第4页
烟台南山学院计算机与电气自动化学院java实训报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

烟台南山学院计算机与电气自动化学院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();//前两个月都是1if(mounth>0&&mounth<=2)System.out.println("兔子在"+mounth+"月有"+count+"只");//3个月以后是当月的为前两个月的和,采用递推的方法算出结果if(mounth>2){for(inti=0;i<mounth-2;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<min){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、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又是一个完全平方数,请问该数是多少?程序分析:在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,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到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口诀。程序分析:分行与列考虑,共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);elsereturnx;}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/10000&&x%10%10==x/10000%10)System.out.println("他是回文数");elseSystem.out.println("他不是回文数");}}publicclassTest35{publicstaticvoidmain(Stringargs[]){System.out.print("请输入要求的五位正整数");Scannersc=newScanner(System.in);intnum=sc.nextInt();Runa=newRun(num);}}第二十一题:求100之内的素数classRun{publicbooleanzhishu(inttemp){booleana=true;//先假设他是素数for(inti=2;i<=Math.sqrt(temp);i++)if(temp%i==0){a=false;break;}//如果他能被整除了,那么他就不是素数,中断循环,得到结果returna;//返回结果}}publicclassTest37{publicstaticvoidmain(Stringargs[]){Runa=newRun();for(inti=2;i<=100;i++)if(a.zhishu(i))System.out.print(i+"");}}第二十二题:对10个数进行排序importjava.util.Scanner;publicclassP8{publicstaticvoidmain(Stringargs[]){int[]a=newint[10];System.out.println("请输入十个整数");Scannersc=newScanner(System.in);for(inti=0;i<10;i++)a[i]=sc.nextInt();for(inti=0;i<10;i++)for(intj=i+1;j<10;j++)if(a[i]>a[j]){inttemp=a[i];a[i]=a[j];a[j]=temp;}for(inti=0;i<10;i++){System.out.print(a[i]);if(i<9)System.out.print("<");}}}第二十三题:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。importjava.util.Scanner;publicclassC10{publicstaticvoidmain(Stringargs[]){inta[]={12,23,34,45,56,67,78,89,99,123};System.out.println("输入要插入的正整数");Scannersc=newScanner(System.in);intnum=sc.nextInt();for(inti=0;i<10;i++)if(num<a[i]){inttemp;for(intj=i;j<10;j++){temp=a[j];a[j]=num;num=temp;}break;}for(inti=0;i<10;i++)System.out.print(a[i]+"<");System.out.print(num);}}第二十四题:将一个数组逆序输出。程序分析:用第一个与最后一个交换publicclassN1{publicstaticvoidmain(Stringargs[]){inta[]={0,1,2,3,4,5,6,7,8,9};for(inti=0;i<5;i++){inttemp=a[i];a[i]=a[9-i];a[9-i]=temp;}for(inti=0;i<10;i++){System.out.print(a[i]);if(i<9)System.out.print(",");}}}第二十五题:定义人类,定义学生类继承人类publicclassTest3{publicstaticvoidmain(Stringargs[]){Studentstudent=newStudent("男","1992-1-1","张世超","201041140113",96.9,"计科1001班

");System.out.println("姓名:"+student.getName());System.out.println("性别:"+student.getSex());System.out.println("籍贯:"+student.getNativee());System.out.println("出生日期:"+student.getDate());System.out.println("学号:"+student.getStuno());System.out.println("入学成绩:"+student.getGrade());student.setGrade(97.7);System.out.println("更改后的入学成绩:"+student.getGrade());}}class

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论