天天看点

Java二级操作题第42套

基本操作

在考生文件夹中存有文件名为Java_1.java的文件,该程序是不完整的,请在注释行“//Found”下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。

程序的功能是:提示用户输入大于0的整数n,利用近似公式计算自然数e的近似值:e=1+(1/1!)+(1/2!)+…+(1/n!),并打印出该近似值

例如输入10时,输出结果为e的近似值为:

2.7182818011463845

import java.lang.*;
import java.util.*;
public class Java_1 {
    public static void main(String[] args){
        int n;
        double e = 1.0;
        System.out.print("请输入n:  ");
        //***************************Found*********************    
        Scanner scan = new Scanner (__________);
        String nstr = scan.next(); 
        //***************************Found*********************    
        n = Integer.______(nstr);
        double t = 1.0;
        for(int i=1;i<=n;i++){
            //***************************Found*********************    
            t =  _________;
            e = e + t;
        }
        System.out.print("e 的近似值为: "+e);
    }        
}      

本题着重考查考生对Java语言基本数据类型的掌握情况。

本题中的第一个空格:根据题干获取用户输入的值,创建 Scanner 对象的基本语法为Scanner s = new Scanner(System.in),因此此处填入System.in;

本题中的第二个空格:scanner获取的数据类型为string,将其强制转换为int,因此此处填入parseInt;

本题中的第三个空格:结合题干,1除以n,n自增,因此此处填入​​

​t/i​

​;(牛呀,我真没想到还可以这样操作(๑•̀ㅂ•́)و✧)

本评析仅作参考。

import java.lang.*;
import java.util.*;
public class Java_1 {
    public static void main(String[] args){
        int n;
        double e = 1.0;
        System.out.print("请输入n:  ");
        //***************************Found*********************    
        Scanner scan = new Scanner (System.in);
        String nstr = scan.next(); 
        //***************************Found*********************    
        n = Integer.parseInt(nstr);
        double t = 1.0;
        for(int i=1;i<=n;i++){
            //***************************Found*********************    
            t =  t/i;
            e = e + t;
        }
        System.out.print("e 的近似值为: "+e);
    }        
}      

简单应用

在考生文件夹中存有文件名为Java_2.java的文件,该程序是不完整的,请在注释行“//Found”下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。

程序的功能是:将一个字符串数组中指定序号后的元素全部输出,如果指定的序号小于0,则序号被赋予0;如果指定的序号大于数组元素的最大序号,则序号被赋予最大的序号。程序的运行结果如下:

one two three four five

//***************************Found********************* 
class PrintStrings implements ________{   
   int ind = 0 ;
   //***************************Found********************* 
   ______ strings = { "one", "two", "three", "four", "five"};

   public PrintStrings( int n) {
      if( n < 0)
    n = 0;
      else if ( n >= strings.length)
         //***************************Found********************* 
    n = ___________ ;
      ind = n;
   }
   //***************************Found********************* 
   public void ____( ){
      while(ind < strings.length){
    System.out.print(strings[ind] + "  ");
        //***************************Found********************* 
    _____________;

      }
      System.out.println();
   }
}

public class Java_2{
   public static void main(String[] args){
      PrintStrings p = new PrintStrings(-1);
      //***************************Found*********************  
      _________;
      t.start( ); 
   }
}      

本题着重考查考生对Java语言线程的掌握情况。

本题中的第一个空格:根据Java_2类可以看出此处用线程的方式来实现,一般情况下我们使用实现Runnable接口来实现线程,此处填入Runnable;

本题中的第二个空格:strings是一个字符串型的数组,对strings的类型定义应该为String[],此处填入String[];

本题中的第三个空格:结合题干,如果指定的序号大于数组元素的最大序号,则序号被赋予最大的序号,此处填入strings.length-1;

本题中的第四个空格:线程要实现run方法,因此此处填入run;

本题中的第五个空格:结合题干,需要打印strings数组,因此要对ind进行自增,此处填入ind++;

本题中的第六个空格:t作为新开的线程,需要定义,p作为已经新建的对象可以作为参数传递,此处填入Thread t = new Thread( p );

本评析仅作参考。

//***************************Found********************* 
class PrintStrings implements Runnable{   
   int ind = 0 ;
   //***************************Found********************* 
   String[] strings = { "one", "two", "three", "four", "five"};

   public PrintStrings( int n) {
      if( n < 0)
    n = 0;
      else if ( n >= strings.length)
         //***************************Found********************* 
    n = strings.length - 1 ;
      ind = n;
   }
   //***************************Found********************* 
   public void run( ){
      while(ind < strings.length){
    System.out.print(strings[ind] + "  ");
        //***************************Found********************* 
    ind++;

      }
      System.out.println();
   }
}

public class Java_2{
   public static void main(String[] args){
      PrintStrings p = new PrintStrings(-1);
      //***************************Found*********************  
      Thread t = new Thread(p);
      t.start( ); 
   }
}      

综合应用

在考生文件夹中存有文件名为Java_3.java的文件,该程序是不完整的,请在注释行“//Found”下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。 存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。

程序釆用Swing组件完成了四叶玫瑰线图形的绘制。三个单选按钮实现了按选定的颜色绘制四叶玫瑰线。

四叶玫瑰线的极坐标方程为:

Java二级操作题第42套

程序的运行结果如下图所示:

Java二级操作题第42套
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//**************found*****************
public class Java_3 extends Frame ____________ ItemListener{
   Color color = Color.blue; 
   CheckboxGroup cg;
   Checkbox cb1,cb2,cb3;
   
   public Java_3(){
      cg = new CheckboxGroup();
      setSize(300,300);
      cb1 = new Checkbox("blue",cg,true);
      cb2 = new Checkbox("red",cg,true);
      cb3 = new Checkbox("green",cg,true);
      cg.setSelectedCheckbox(cb1);
      add(cb1);  add(cb2);  add(cb3);
      cb1.addItemListener(this);
      cb2.addItemListener(this);
      //**************found*****************
      ____________.addItemListener(this);
   }
   
   public void itemStateChanged(ItemEvent e){ 
      if(e.getSource()==cb1) 
         color=Color.blue;
      if(e.getSource()==cb2) 
         color=Color.red;
      if(e.getSource()==cb3) 
         color=Color.green;
      repaint();
   } 
   
   class MyEvent1 extends WindowAdapter { 
      public void windowClosing(WindowEvent e){ 
         System.exit(0); 
     }
   } 
   
   class MyEvent2 extends ComponentAdapter { 
      public void componentResized(ComponentEvent e){ 
         repaint(); 
      }
   }
   
   //**************found*****************
   public void ____________(Graphics g) { 
      int w = getWidth(),h=getHeight();
      int x0 = w/2,y0 = h/2; 
      g.setColor(color);
      g.drawLine(x0,0,x0,h);
      g.drawLine(0,y0,w,y0);
      double pi = 3.1415926,angle,rou;
      int r,i,x,y;
      for(r=10;r<200;r+=20){ 
         for(i=0;i<1023;i++){ 
            
            angle = i * pi/512; 
            rou = r * Math.sin(2*angle);
            x = (int)Math.round(rou*Math.cos(angle));
            y = (int)Math.round(rou*Math.sin(angle));
            g.drawOval(x0+x,y0+y,1,1);
          }
       }
   }
   
   public static void main(String[] args){  
      Java_3 f = new Java_3(); 
      MyEvent1 me1 = f.new MyEvent1();
      MyEvent2 me2 = f.new MyEvent2();
      //**************found*****************
      f.____________("四叶玫瑰线");  
      f.setLayout(new FlowLayout());  
      f.addWindowListener(me1);
      f.addComponentListener(me2);
      //**************found*****************
      f.____________(true);
   }   
}      

本题着重考查考生对Java语言Swing组件中Frame的掌握情况。

本题中的第一个空格:ItemListener是一个标准接口,要使用implements关键字实现接口,此处填入implements;

本题中的第二个空格:cb1和cb2都是Checkbox类型,都添加了addItemListener监听,cb3也是checkboxgroup的一部分,也要添加addItemListener监听,此处填入cb3;

本题中的第三个空格:绘制的基本逻辑都应该写在paint函数中,当有改变时会通过repaint函数隐式调用paint重绘,此处填入paint;

本题中的第四个空格:四叶玫瑰线是frame标题,使用setTitle方法设置标题,此处填入setTitle;

本题中的第五个空格:frame定义完成后需要显示,使用setVisible方法,此处填入setVisible;

本评析仅作参考。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//**************found*****************
public class Java_3 extends Frame implements ItemListener{
   Color color = Color.blue; 
   CheckboxGroup cg;
   Checkbox cb1,cb2,cb3;
   
   public Java_3(){
      cg = new CheckboxGroup();
      setSize(300,300);
      cb1 = new Checkbox("blue",cg,true);
      cb2 = new Checkbox("red",cg,true);
      cb3 = new Checkbox("green",cg,true);
      cg.setSelectedCheckbox(cb1);
      add(cb1);  add(cb2);  add(cb3);
      cb1.addItemListener(this);
      cb2.addItemListener(this);
      //**************found*****************
      cb3.addItemListener(this);
   }
   
   public void itemStateChanged(ItemEvent e){ 
      if(e.getSource()==cb1) 
         color=Color.blue;
      if(e.getSource()==cb2) 
         color=Color.red;
      if(e.getSource()==cb3) 
         color=Color.green;
      repaint();
   } 
   
   class MyEvent1 extends WindowAdapter { 
      public void windowClosing(WindowEvent e){ 
         System.exit(0); 
     }
   } 
   
   class MyEvent2 extends ComponentAdapter { 
      public void componentResized(ComponentEvent e){ 
         repaint(); 
      }
   }
   
   //**************found*****************
   public void paint(Graphics g) { 
      int w = getWidth(),h=getHeight();
      int x0 = w/2,y0 = h/2; 
      g.setColor(color);
      g.drawLine(x0,0,x0,h);
      g.drawLine(0,y0,w,y0);
      double pi = 3.1415926,angle,rou;
      int r,i,x,y;
      for(r=10;r<200;r+=20){ 
         for(i=0;i<1023;i++){ 
            
            angle = i * pi/512; 
            rou = r * Math.sin(2*angle);
            x = (int)Math.round(rou*Math.cos(angle));
            y = (int)Math.round(rou*Math.sin(angle));
            g.drawOval(x0+x,y0+y,1,1);
          }
       }
   }
   
   public static void main(String[] args){  
      Java_3 f = new Java_3(); 
      MyEvent1 me1 = f.new MyEvent1();
      MyEvent2 me2 = f.new MyEvent2();
      //**************found*****************
      f.setTitle("四叶玫瑰线");  
      f.setLayout(new FlowLayout());  
      f.addWindowListener(me1);
      f.addComponentListener(me2);
      //**************found*****************
      f.setVisible(true);
   }   
}