数据结构课程实验一JAVA程序设计基础.pdf
. .实验报告一实验报告一JAVAJAVA 程序设计基础及算法设计程序设计基础及算法设计班级_学号_ 专业_一、实验目的:(1)掌握 JAVA 语言的语法,理解数组和对象的引用模型,理解类的封装、继承和多态(2)掌握类的设计方法(3)掌握异常处理方法和标准输出方法,了解标准输入方法(4)熟悉算法的描述方法、算法时间复杂度的分析和计算方法(5)理解数据和算法的基本概念二、实验容:1、 采用二维数据输出辉三角形,二维数据的结构如图1 所示:012345matmat0mat11mat2mat311mat4121mat513311464115101051图 1 辉三角形的二维数组结构请粘贴源程序及运行测试结果:源程序:importimport java.util.Scanner;publicclasspublicclass Ex publicstaticvoidpublicstaticvoid pri( intint a, intint x)forfor(intint i=0;ix;i+)forfor(intint j=0;j=i;j+)System.out.printf(%5d ,aij);System.out.println();publicstaticintpublicstaticint Def(intint x)intint a=newintnewintxx;forfor(intint i=0;ix;i+)ai0=1;aii=1;forfor(intint i=2;ix;i+)forfor(intint j=1;ji;j+)aij=ai-1j+ai-1j-1;returnreturn a;publicstaticvoidpublicstaticvoid main(String args)Scanner scan=newnew Scanner(System.in);.资料.System.out.println(输入维数:);intint x=scan.nextInt();intint a=Def(x);scan.close();pri(a,x);运行结果:2、 找出一个二维数据的鞍点,即该位置上的元素在该行上最大,在该列中最小。一个二维数组可能没有鞍点,如果有,那么它只有一个鞍点。请粘贴源程序及运行测试结果:publicclasspublicclass EX1 publicstaticintpublicstaticint Def(intint a, intint b)intint x=newintnewintab;forfor(intint i=0;ia;i+)forfor(intint j=0;jb;j+)System.out.println();xij=(intint)(10*Math.random();System.out.printf(%4d, xij);returnreturn x;publicstaticintpublicstaticint Find(intint x)intint min=0,max=0,a=0;forfor(intint i=0;ix.length;i+)max=0;forfor(intint j=0;jxi.length;j+)if if(maxxij).-max=xij;a=j;forfor(intint z=0;zxia)min=xia;if if(max=min)returnreturn max;returnreturn 0;publicstaticvoidpublicstaticvoid main(String args) intint x=newintnewint66;intint a=0;elseelseSystem.out.printf(此数组没有鞍点);x=Def(5,5);a=Find(x);System.out.printf(此数组鞍点为+%4d,a);if if(a!=0)结果:3、 设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、转换成字符串等运算或操作。测试数据-可修编-(1)Z1=0,Z2=0;(2)Z1=4,Z2=3i;(3)Z1=3+1.5i,Z2=8-1.5i;(4)Z1=-4+3.4i,Z2=-6-8.1i;(5)Z1=-5.4+1.2i,Z2=5.4+3.2i;(6)Z1 的共轭复数:publicclasspublicclass plex privatedoubleprivatedoublerealPart;privatedoubleprivatedoubleimaginPart;publicpublic plex()realPart=0;imaginPart=0;publicpublic plex(doubledouble a, doubledouble b)thisthis.realPart=a;thisthis.imaginPart=b;publicdoublepublicdouble getrealPart()returnreturnrealPart;publicvoidpublicvoid setrealPart(doubledouble a)thisthis.realPart=a;publicdoublepublicdouble getimaginPart()returnreturnimaginPart;publicvoidpublicvoid setimaginPart(doubledouble b)thisthis.imaginPart=b;publicpublic plex plexG(plex c)plex x=newnew plex();plex x=newnew plex();x.realPart=thisthis.realPart-c.realPart;x.imaginPart=thisthis.imaginPart-c.imaginPart;plex x=newnew plex();x.realPart=thisthis.realPart+c.realPart;x.imaginPart=thisthis.imaginPart+c.imaginPart;publicpublic plex plexAdd(plex c)returnreturn x;publicpublic plex plexMinus(plex c)returnreturn x;.-doubledouble a=(doubledouble)thisthis.imaginPart;x.realPart=thisthis.realPart;x.imaginPart=a*-1;returnreturn x;publicpublic String toString()returnreturnrealPart+imaginPart+i;importimport java.util.Scanner;publicclasspublicclass Test staticdoublestaticdoublex1=0;staticdoublestaticdoubley1=0;staticdoublestaticdoublex2=0;staticdoublestaticdoubley2=0;staticstatic Scannerscan=newnew Scanner(System.in);staticstatic plexz1=newnew plex();staticstatic plexz2=newnew plex();publicstaticvoidpublicstaticvoid Def()System.out.println(输入Z1的实部:);x1=scan.nextDouble();System.out.println(输入Z1的虚部:);y1=scan.nextDouble();System.out.println(输入Z2的实部:);x2=scan.nextDouble();System.out.println(输入Z2的虚部:);y2=scan.nextDouble();z1.setrealPart(x1);z1.setimaginPart(y1);z2.setrealPart(x2);z2.setimaginPart(y2);publicstaticvoidpublicstaticvoid Pri()System.out.println(z1=+z1.toString();System.out.println(z2=+z2.toString();-可修编-System.out.println(z1+z2=+z1.plexAdd(z2).toString();System.out.println(z1-z2=+z1.plexMinus(z2).toString();System.out.println(z1的共轭z3=+z1.plexG(z1).toString();publicstaticvoidpublicstaticvoid main(String args) Def();Pri();粘贴测试结果4、 数组逆置。将一个已知数组中所有元素的次序颠倒为相反次序,求算法的时间复杂度和空间复杂度。请粘贴源程序并写出时间复杂度和空间复杂度:publicclasspublicclass EX4publicstaticintpublicstaticint Def(intint a)intint x=newintnewinta;forfor(intint i=0;i10;i+)xi=(intint)(10*Math.random();System.out.printf(%2d,xi);.-returnreturn x;publicstaticvoidpublicstaticvoid Pri(intint x)intint y;forfor(intint i=0;ix.length/2;i+)publicstaticvoidpublicstaticvoid main(String args)intint x=newintnewint10;x=Def(10);System.out.println();System.out.printf(%2d,xi);y=xi;xi=x(intint)x.length-1-i;x(intint)x.length-1-i=y;forfor(intint i=0;ix.length;i+)Pri(x);空间复杂度:1时间复杂富:O(n)三、心得体会: (含上机中所遇问题的解决办法, 所使用到的编程技巧、创新点及编程的心得)-可修编-