12004《Java程序设计》上机练习题(共包括四部分、16个练习、共96个练习题,请使用“视图”中的“文档结构图”查看)一、java语言基础和面向对象(教材内容的第1、2、3章)练习1(4)掌握:各种数据类型变量的定义和访问,各种数据类型常量的使用,数据类型转换。1.编写Applet,其功能为:取两个小于1000的正随机数,若两个数均小于10,先将它们都放大50倍,否则不改变这两个数。最后,求这两个数的和并将结果输出。要求这些功能在主类的方法init()中实现,并使输出结果仅保留小数点后4位(不需四捨五入)。@程序importjava.awt.*;importjava.applet.*;publicclassApplet1extendsApplet{publicvoidinit(){Labelout1=newLabel();Labelout2=newLabel();doublex,y;add(out1);add(out2);x=Math.random()*1000;y=Math.random()*1000;if(x10&y10){x*=50;y*=50;}out1.setText(+x+++y+约等于);out2.setText(+(int)((x+y)*10000)/10000.0);}}2.请编写一个Applet,其功能为:取一个小于10000的正随机整数,并输出该数的平方根。要求这些功能在主类的方法paint()中实现,并使输出结果在四捨五入后保留小数点后4位。@程序importjava.awt.*;importjava.applet.*;publicclassApplet1extendsApplet{publicvoidpaint(Graphicsg){2intk;k=(int)(Math.random()*1000);g.drawString(+k+的平方根约等于+(int)((Math.sqrt(k)+0.00005)*10000)/10000.0,20,20);}}3.编写一个Applet,其功能为:取一个50~200之间的正随机整数,如果该数为奇数则求它的平方根并转换成float型数后再输出;如果该数为偶数则求它的平方并输出。@程序importjava.awt.*;importjava.applet.*;publicclassApplet1extendsApplet{publicvoidpaint(Graphicsg){intk;k=50+(int)(Math.random()*150);if(k%2!=0)g.drawString(+k+的平方根约等于+(float)Math.sqrt(k),20,20);elseg.drawString(+k+的平方等于+k*k,20,20);}}4.请编写一个Application,其功能为:取一个小于800的正随机整数,将其以如下形式输出:所取随机数为:***它的百位数字为:*它的十位数字为:*它的个位数字为:*@程序//importjava.io.*;publicclassClass1{publicstaticvoidmain(String[]args){intx=(int)(Math.random()*800);System.out.println(所取随机数为:+x);System.out.println(它的百位数字为:+x/100);System.out.println(它的十位数字为:+x%100/10);System.out.println(它的个位数字为:+x%10);//try{System.in.read();}catch(IOExceptione){}}}3练习2(5)掌握:(1)数组的定义、创建和初始化。(2)方法的定义和调用。(3)方法的参数是数组、方法的返回值是数组的编程。(4)方法的递归调用。(5)在应用程序中,接受并处理命令行参数。1.请编写一个Applet,其中定义了两个double类型数组a和b,还定义了一个方法square()。数组a各元素的初值依次为1.2、2.3、3.4、4.5、5.6,数组b各元素的初值依次为9.8、8.7、7.6、6.5、5.4、4.3;方法square()的参数为double类型的数组,返回值为float类型的数组,功能是将参数各元素的平方做为返回数组的元素的值。请在方法paint()中分别以a和b为实在参数调用方法square(),并将返回值输出在屏幕上。要求调用square(a)的返回数组输出在Applet的一行上,数组的第一个元素的输出坐标为(20,20),其后的每个元素间隔40个像素。调用square(b)的返回数组输出在Applet的一列上,即下标为i+1(i=0,1,2,3,......)的元素的值,在下标为i的元素的值的正下方,其返回数组的第一个元素的输出坐标为(20,40),行隔为20像素。@程序importjava.awt.*;importjava.applet.*;publicclassApplet1extendsApplet{doublea[]={1.2,2.3,3.4,4.5,5.6};double[]b={9.8,8.7,7.6,6.5,5.4,4.3};publicvoidpaint(Graphicsg){float[]x=newfloat[a.length];float[]y=newfloat[b.length];x=square(a);y=square(b);for(inti=0;ix.length;i++)g.drawString(+x[i],20+i*40,20);for(inti=0;iy.length;i++)g.drawString(+y[i],20,40+i*20);}float[]square(doublex[]){float[]y=newfloat[x.length];for(inti=0;ix.length;i++)y[i]=(float)(x[i]*x[i]);returny;}}42.请编写一个Application实现如下功能:在主类中定义两个double类型数组a和b,再定义一个方法sqrt_sum()。数组a各元素的初值依次为1.2、2.3、3.4、4.5、5.6,数组b各元素的初值依次为9.8、8.7、7.6、6.5、5.4、4.3;方法sqrt_sum()的参数为double类型的数组,返回值类型为float型,功能是求参数各元素的平方根之和。请在主方法main()中分别以a和b为实在参数调用方法sqrt_sum(),并将返回值输出在屏幕上。@程序//importjava.io.*;publicclassClass1{staticdoublea[]={1.2,2.3,3.4,4.5,5.6};staticdoubleb[]={9.8,8.7,7.6,6.5,5.4,4.3};publicstaticvoidmain(String[]args){System.out.println(数组a各元素的平方根之和为:+sqrt_sum(a));System.out.println(数组b各元素的平方根之和为:+sqrt_sum(b));//try{charc=(char)System.in.read();}catch(IOExceptione){}}staticfloatsqrt_sum(double[]x){doubley=0.0;for(inti=0;ix.length;i++)y+=Math.sqrt(x[i]);return(float)y;}}3.请编写一个Application实现如下功能:在主类中定义方法f1(intn)和方法f2(intn),它们的功能均为求n!,方法f1()用循环实现,方法f2()用递归实现。在主方法main()中,以4为实在参数分别调用方法f1()和方法f2(),并输出调用结果。@程序//importjava.io.*;publicclassClass1{publicstaticvoidmain(String[]args){System.out.println(用循环实现求n!的结果(n=4):+f1(4));System.out.println(用递归实现求n!的结果(n=4):+f2(4));//try{charc=(char)System.in.read();}catch(IOExceptione){}5}staticlongf1(intn){longk=1;for(inti=1;i=n;i++)k*=i;returnk;}staticlongf2(intn){if(n==1)return1;elsereturnn*f2(n-1);}}4.请编写一个Application实现如下功能:接受命令行中给出的三个参数x1、x2和op,其中x1和x2为float型数,op是某个算数运算符(+、—、*、/之一),请以如下形式输出x1和x2执行op运算后的结果(假设x1的值为269,x2的值为18,op为运算符—):269–18=251@程序publicclassClass1{publicstaticvoidmain(String[]args){floatx,y;charop;if(args.length=3){x=Float.valueOf(args[0]).floatValue();y=Float.valueOf(args[1]).floatValue();op=args[2].charAt(0);switch(op){case'+':System.out.println(x+++y+=+(x+y));break;case'-':System.out.println(x+-+y+=+(x-y));break;case'*':System.out.println(x+*+y+=+(x*y));break;case'/':System.out.println(x+/+y+=+(x/y));break;default:System.out.println(非法运算符!);}}else{System.out.println(命令行参数错!);System.exit(-1);}}}5.编写Application,主类中包含以下两个自定义方法:voidprintA(int[]array)和int[]6myArray(intn)。方法printA(int[]array)的功能是把参数数组各元素在屏幕的一行中输出。方法myArray(intn)的功能是生成元素值是50~100之间的随机值的int型数组,数组元素的个数由参数n指定。在应用程序的main()方法中,用命令行传入的整数作为myArray(intn)方法调用时的实际参数,生成一个整型数组,并调用方法printA()输出该数组的所有元素。@程序publicclassClass1{staticintn;publicstaticvoidmain(String[]args){if(args.length0){n=Integer.parseInt(args[0]);int[]a=newint[n];a=myArray(n);printA(a);}else{System.out.println(缺命令行参数!);System.exit(-1);}}staticvoidprintA(int[]x){for(inti=0;ix.length;i++)System.out.print(x[i]+);System.out.println();return;}staticint[]myArray(intk){intx[]=newint[k];for(inti=0;ik;i++)x[i]=50+(int)(Math.random()*50);returnx;}}练习3(3)掌握:方法的重载。1.请编写一个Applet,其主类名为Applet1,其中包含两个同