上机练习题 一、java语言基础和面向对象 练习1(4) 掌握:各种数据类型变量的定义和访问,各种数据类型常量的使用,数据类型转换。 1.编写Applet,其功能为:取两个小于1000的正随机数,若两个数均小于10,先将它们都放大50 倍,否则不改变这两个数。最后,求这两个数的和并将结果输出。要求这些功能在主类的方法() 中实现,并使输出结果仅保留小数点后4位(不需四拾五入)。 @程序 import java.awt.*; import java.applet..◆: public void init() Label outl=new label(" Label out2-new Label( doublex.y, add(out1): add(out2): x=Math random()*1000 y=Math.random(1000 ifx<10&y<10)x*=50 y*=50} out1.setText("+x+"+"+y+"约等于"): out2.setText(""+(int)((x+y)1000I000.0). 2.请编写一个Applet,.其功能为:取一个小于10000的正随机整数,并输出该数的平方根。要求这 些功能在主类的方法pait()中实现,并使输出结果在四拾五入后保留小数点后4位。 @程序 import java.awt, import java apple public class Applet1 xtends Applet public void paint(Graphics g) intk
上机练习题 一、java 语言基础和面向对象 练习 1(4) 掌握:各种数据类型变量的定义和访问,各种数据类型常量的使用,数据类型转换。 1. 编写 Applet,其功能为:取两个小于 1000 的正随机数,若两个数均小于 10,先将它们都放大 50 倍,否则不改变这两个数。最后,求这两个数的和并将结果输出。要求这些功能在主类的方法 init( ) 中实现,并使输出结果仅保留小数点后 4 位(不需四捨五入)。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void init( ) { Label out1=new Label(" "); Label out2=new Label(" "); double x,y; add(out1); add(out2); x=Math.random( )*1000; y=Math.random( )*1000; if(x<10&y<10) { x*=50; y*=50; } out1.setText(""+x+"+"+y+" 约等于 "); out2.setText(""+(int)((x+y)*10000)/10000.0); } } 2. 请编写一个 Applet,其功能为:取一个小于 10000 的正随机整数,并输出该数的平方根。要求这 些功能在主类的方法 paint( ) 中实现,并使输出结果在四捨五入后保留小数点后 4 位。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint(Graphics g) { int k;
k=(int)(Math random()*1000): g drawString("+k+"的平方根约等于+ (imt(Math.sqrt(k)+0.00005)*10000/10000.0,20,20 3.编写一个Applet,其功能为:取一个50-200之间的正随机整数,如果该数为奇数则求它的平方 根并转换成0at型数后再输出:如果该数为偶数则求它的平方并输出。 @程序 import java.awt. import java.applet. public class Applet1 extends Applet public void paint(Graphicsg) intk. k=50+(int)(Math.random()*150). ik%21=0) ("+k+的平方根约等于+(float)Mah.sqrt(k,)20,20 c g drawString("+k+"的平方等于"+kk,20,20: 4.请编写一个,其功能为:取一个小于800的正随机整数,将其以如下形式输出: 所取随机数为:幸* 它的百位数字为:* 它的十位数字为:* 它的个位数字为:* @程序 //import java.io.*; public class Classl public static void main(Stringargs) int x=(int)(Math random()*800) System.out.printn("所取随机数为:"+x, System.out.println("它的百位数字为:"+x/100: System..ouprintn(它的十位数字为:"+x%100/1O) System.outprint(它的个位数字为:+x%1 //try System.in.read():)catch(IOException e))
k=(int)(Math.random( )*1000); g.drawString(""+k+" 的平方根约等于 "+ (int)((Math.sqrt(k)+0.00005)*10000)/10000.0,20,20); } } 3. 编写一个 Applet,其功能为:取一个 50~200 之间的正随机整数,如果该数为奇数则求它的平方 根并转换成 float 型数后再输出;如果该数为偶数则求它的平方并输出。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint(Graphics g) { int k; k=50+(int)(Math.random( )*150); if(k%2!=0) g.drawString(""+k+" 的平方根约等于 "+(float)Math.sqrt(k),20,20); else g.drawString(""+k+" 的平方等于 "+k*k,20,20); } } 4. 请编写一个 Application,其功能为:取一个小于 800 的正随机整数,将其以如下形式输出: 所取随机数为:*** 它的百位数字为:* 它的十位数字为:* 它的个位数字为:* @程序 //import java.io.*; public class Class1 { public static void main (String[] args) { int x=(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(IOException e){ } } }
练习2(5) 掌提:(1)数组的定义、创建和初始化。 (2)方法的定义和调用。 (3)方法的 数是数组、 方法的返回值是数组的编程 (4)方法的递归调用。 (5)在应用程序中,接受并处理命令行参数: 1.请编写一个Applet,.其中定义了两个double类型数组a和b,还定义了一个方法square().数组a 各元素的初值依次 1.2、23、3.4、4.5、5.6 数组b各元素的初值依次为9.8、 87 7.6、6.5、5.4 4.3:方法square()的参数为double类型的数组,返回值为oat类型的数组,功能是将参数各元素的 平方做为返回数组的元素的值。请在方法paint()中分别以a和b为实在参数调用方法square((), 并将返回值输出在屏幕上。要求调用square(a)的返回数组输出在Applet的一行上,数组的第一个 元素的输出坐标为(20,20),其后的每个元素间隔40个像素。调用squar心(b)的返回数组输出在 Applet的一列上,即下标为i+1(=01,23)的元素的值,在下标为i的元素的值的正下方,其返回数 组的第 一个元素的输出坐标为(20,40),行隔为20像素。 @程序 import iava awt◆, import java applet. public class Applet1 extends Apple double a[={1.2,2.3,3.4,4.5,5.6} double[1b=9.88.7,7.6,6.55.4,4.3 public void paint(Graphics g) float[]x=new float[alength]: float[]y=new float[b.length]: x=square(a), y-square(b) for(inti=0:i<x.length;i++) g.drawString("+x[门,20+i*40,20y for(int i=0:isy.length:it+) g drawString("+vlil.20.40+i*20) float[]square(double]) float[y=new float[x.length]: for(inti=0:i<x.length;i+) y[=(oat)(x*xi return y;
练习 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 像素。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { double a[ ]={1.2,2.3,3.4,4.5,5.6}; double[ ] b={9.8,8.7,7.6,6.5,5.4,4.3}; public void paint(Graphics g) { float[ ] x=new float[a.length]; float[ ] y=new float[b.length]; x=square(a); y=square(b); for(int i=0; i<x.length;i++) g.drawString(""+x[i],20+i*40,20); for(int i=0; i<y.length;i++) g.drawString(""+y[i],20,40+i*20); } float[ ] square(double x[ ]) { float[ ] y=new float[x.length]; for(int i=0; i< x.length; i++) y[i]=(float)(x[i]*x[i]); return y; } }
2.请编写一个Application实现如下功能:在主类中定义两个double类型数组a和b,再定义一个方 法sq 。m人数组a各元者的都值依放为1228.3445,56,数组b各元素的初值佐放为 9.8、 6.5、54、43 sqrt_sum )的参数为double类型的数组 返回值类型为1ot型 功能是求参数各元素的平方根之和.请在主方法main()中分别以a和b为实在参数调用方法sqrt_sum (),并将返回值输出在屏幕上。 @程序 //importjavaio.*; public class Classl static double a={1.2.2.3,3.4.4.55.6}: static double b[]=9.8,8.7,7.6,6.5,5.44.3g public static void main(Stringargs) System.("数组a各元素的平方根之和为:"+sqrt_sum(a)以 System.("数组b各元素的平方根之和为:"+sqrt_sum(b) //trychar =(char)System.in.read()catch(IOExceptione) static float sqrt_sum(double[]x) double y=0.0: for(int i=0:isx.length:++) y+=Math.sqrt(x[i]): return(float)y; 3.请编写一个Application实现如下功能:在主类中定义方法f1(intm和方法f2(intn),它们的功 能均为求nl,方法f1()用循环实现,方法2()用递归实现。在主方法mai()中,以4为实在参 数分别调用方法1()和方法2(),并输出调用结果。 @程序 //importjavaio.*: public static void main(Stringargs) System.out.printn("用循环实现求nl的结果(n=4):"+f(4) System.out.print("用递归实现求nl的结果(n=4):"+2(4) //rychar c=(char)System.in.read():)catch(IOExceptione)
2. 请编写一个 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 ( ),并将返回值输出在屏幕上。 @程序 //import java.io.*; public class Class1 { static double a[ ]={1.2,2.3,3.4,4.5,5.6}; static double b[ ]={9.8,8.7,7.6,6.5,5.4,4.3}; public static void main (String[] args) { System.out.println("数组 a 各元素的平方根之和为:"+sqrt_sum(a)); System.out.println("数组 b 各元素的平方根之和为:"+sqrt_sum(b)); //try{ char c=(char)System.in.read( );}catch(IOException e){ } } static float sqrt_sum(double[ ] x) { double y=0.0; for(int i=0; i<x.length; i++) y+=Math.sqrt(x[i]); return (float)y; } } 3. 请编写一个 Application 实现如下功能:在主类中定义方法 f1(int n) 和方法 f2(int n),它们的功 能均为求 n!,方法 f1( ) 用循环实现,方法 f2( )用递归实现 。在主方法 main( ) 中,以 4 为实在参 数分别调用方法 f1( ) 和方法 f2( ),并输出调用结果。 @程序 //import java.io.*; public class Class1 { public static void main (String[] args) { System.out.println("用循环实现求 n! 的结果(n=4):"+f1(4)); System.out.println("用递归实现求 n! 的结果(n=4):"+f2(4)); //try{ char c=(char)System.in.read( );}catch(IOException e){ }
static longfl(int n) long k=1: for(int i=1:i<=n;i++) k*=i: returnk. static long f2(int n) if(n=1)return 1: else returnn*2(n-l方 4.请编写一个Application实现如下功能:接受命令行中给出的三个参数xl、x2和op,其中xl和 p是某个算数运算符(+, 、◆、/之一),请以如下形式输出x1和x2执行o叩 运算后的结果(假设x1的值为269 x2的值为18,0p为运算符一为 269-18=251 @程序 public class Classl public static void main(Stringargs) float x.v: char op: if(args.length>=3) x=Float.valueOf(args[0]).floatValuc(). y=Float.valueOf(args[1]).float Value(); op=args[2].charAt(0). switch(op) case:System.out.println(x+"+y+"+(xy))break case:System.out.println(x+"++(xy)).break: case.System.out.println(x+"+y+"=+(xy));break case System.out.println(x+"/"+y+"="+(x/v)break: default-Sy stem out printlp"非法运算符1) } else {System.outprintn("命令行参数错I"),System.exi(-l,片} 5.编写Application,主类中包含以下两个自定义方法:void printA(int[】aray)和int0
} static long f1(int n) { long k=1; for(int i=1;i<=n;i++) k*=i; return k; } static long f2(int n) { if(n==1) return 1; else return n*f2(n-1); } } 4. 请编写一个 Application 实现如下功能:接受命令行中给出的三个参数 x1、x2 和 op,其中 x1 和 x2 为 float 型数,op 是某个算数运算符(+、 —、*、/ 之一),请以如下形式输出 x1 和 x2 执行 op 运算后的结果(假设 x1 的值为 269,x2 的值为 18,op 为运算符—): 269 – 18=251 @程序 public class Class1 { public static void main (String[] args) { float x,y; char op; 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,主类中包含以下两个自定义方法: void printA( int[ ] array )和 int[]