上机练习题
练习1(4)
1.取两个小于1000的正随机数,若两个数均小于10,先将它们都放大50倍,否则不改变这两个数最后,求这两个数的和并将结果输出。要求这些输出结果仅保留小数点后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(\约等于 \ out2.setText(\ } }
2.取一个小于10000的正随机整数,并输出该数的平方根。要求这些输出结果在四捨五入后保留小数点后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(\的平方根约等于 \ (int)((Math.sqrt(k)+0.00005)*10000)/10000.0,20,20); } }
3.取一个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(\的平方根约等于 \ else g.drawString(\的平方等于 \ } }
4.取一个小于800的正随机整数,将其以如下形式输出: 所取随机数为:*** 它的百位数字为:* 它的十位数字为:* 它的个位数字为:* //import java.io.*;
public class Class1 { public static void main (String[] args) { int x=(int)(Math.random( )*800); System.out.println(\所取随机数为:\ System.out.println(\它的百位数字为:\ System.out.println(\它的十位数字为:\ System.out.println(\它的个位数字为:\ //try{ System.in.read( ); }catch(IOException e){ } } }
练习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 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 { } 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):\System.out.println(\用递归实现求 n! 的结果(n=4):\//try{ char c=(char)System.in.read( );}catch(IOException e){ } 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) { } static float sqrt_sum(double[ ] x) { } double y=0.0; for(int i=0; i System.out.println(\数组a各元素的平方根之和为:\System.out.println(\数组b各元素的平方根之和为:\//try{ char c=(char)System.in.read( );}catch(IOException e){ } } static long f1(int n) { long k=1; for(int i=1;i<=n;i++) k*=i; } static long f2(int n) { } if(n==1) return 1; else return n*f2(n-1); return k; } 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+\ break; case '-': System.out.println(x+\ break; case '*': System.out.println(x+\ break; case '/': System.out.println(x+\ break; default : System.out.println(\非法运算符!\ } } else { System.out.println(\命令行参数错!\ System.exit(-1); } } } 5. 编写Application,主类中包含以下两个自定义方法: void printA( int[ ] array )和int[]