天天看點

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);
   }   
}