软件水平考试(初级)程序员下午(应用技术)模拟试卷18

0
收藏   分享
  • 卷面总分:75分
  • 试卷类型:模拟考试
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:24次
  • 作答时间:150分钟
试卷简介
试卷预览
1

阅读以下技术说明及Java程序,将Java程序中(1)~(5)空缺处的语句填写完整。

  【说明】

 用创建Thread类的子类的方法实现多线程,判断一个数是否是素数。如果是,打印“是素数”,如果不是,则打印“不是素数”;如果没有参数输入,显示“请输入一个命令行参数”。

【Java程序】

import java.io.* ;

public class TestThread{             //Java Application主类

 public static void main(Sting args[ ]){

   if (args length<l) {          //要求用户输入一个命令行,否则程序不能进行下去

      system.out.println("请输入一个命令行参数");

      system.exit(0) ;

   }                    //创建用户Thread子类的对象实例,使其处于NewBorn状态

   primeThread getPrimes = new primeThread (Integer.parseInt(args[0]));

   getPrimes.start () ;           //启动用户线程,使其处于Runnable状态

   while(getPrimes.isAlive()&& getPrimes.ReadyToGoOn() ) {

     system.out.println("Counting the prime number..\n");  //说明主线程在运行

     try {

       Thread. sleep (500);      //使主线程挂起指定毫秒数,以便用户线程取得控制权,

                       //sleep是static的类方法

     }

     Catch(InterruptedException e) {  //sleep方法可能引起的异常,必须加以处理

       return ;

     }

   }                   //while循环结束

   System.out.println ("按任意键继续……") ; //保留屏幕,以便观察

   try {

      (1);

   }

   Catch(IOException e) {  }

 }                     //main方法结束

}

class primeThread extends Thread {

    //创建用户自己的Thread子类run()中实现程序子线程操作

 boolean m_bContinue=true;         //标志本线程是继续

 int m_nCircleNum ;            /循环的上限

 prime Thread(int Num){          //构造函数

   m_nCircleNum =Nam;

 }

 boolean ReadyToGoOn () {         //判断本线程是否继续执行

   return ( (2) );

 }

 public void run () {

   //继承并重载父类Thread的run ()方法,在该线程被启动时自动执行

   int number =3;

   boolean flag=true;

   while (true) {            //无限循环

     for((3); i++)         //检查number是否为素数

       if(number %i==0)

         (4);

       system, out. println (flag);

       if (flag)           //打印该数是否为素数的信息

         system,out.print in (number+ "是素数") ;

       else

         sys rem.out.print In (number+ "是素数") ;

       number++ ; &nb

1

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。[说明]

 下面的词典类Dic实现了简单的英译汉功能。程序运行后的输出为“我是一个学生”。

[C++程序]

#include <iostream.h>

#include <string.h>

#define Max 100

class Dic

{ int top;

  char words[Max] [12];

  char mean[Max] [20];

  public:

    Die(){top=0;}

    void add(char w[],char m[]){

       strcpy(words[top],w);

       strcpy(mean[top],m);

       (1);

    }

    void trans(char str[]) {

        int i=0,j=0,k=0,s;

        char w[12],h[200];

        while(l) {

         if(str[i]! =''&&str[i]! ='\0')

            w[j++]=str[i];   //读取单词的一个字符,记录在w中

         else {

           w[j]='\0';

           for(s=0;s < top;s++)

             if(strcmp(words[s],w) (2) 0) break;

           if(s<top)         //找到了,翻译成对应的mean[s]

           { strcpy(w,mean[s]); j=(3);}

           else            //未找到,翻译成(unknown)

           { strcpy(w,"(unknown)"}; j=9; }

           for(s=0;s<j;s++)

              h[k++]=w[s];

           if(str[i]=='\0') { (4); break;}

           j=0;

          }

          i++;

        }

        cout<<h<<endl;

    }

};

void main()

{ Dic obj;

  obj.add("I","我");

  obj.add("am","是");

  obj.add("student","学生");

  obj.add("a","一个");

  obj.trans("(5)");

}

1

阅读以下应用说明和Visual Basic程序,根据要求回答问题1问题2。

 【说明】

 某机动车驾驶员模拟考试系统的“交通禁令标志识别”窗体中,共有1个按钮(CmdTest)、6个标签、 1个包含10个单选按钮的控件数组(OptPicture),如图2-15所示。其中,标签(LblPrompt1)“禁令标志”与标签(LblTest)相对应,标签(LblPrompt2)“图片答案”与标签(LblAnswer)相对应,标签(LblEvaluate)为结果提示。

 

 窗体(Frm001)对象和单选按钮控件数组(OptPicture)对象的部分属性及属性值如表2-15所示。

 

该程序运行时,单击【测试】按钮(CmdTest),在标签(LblTest)中随机显示一个交通禁令标志名称,用户单击控件数组(OptPicture)相应单选按钮后,程序在标签(LblAnswer)给出用户所击单选按钮对应的交通禁令标志名称,在标签(LblEvaluate)给出正确或错误的提示结果,如图2-15和图2-16所示。

 

【Visual Basic 程序】

Dim (4) As String

Private Sub cmdTest_Click()

 Dim i As Integer

 For i = 0 To 9

   (5) 

 Next i

 lblPrompt2.Visible = False

 lblAnswer.Visible = False

 lblEvaluate.Visible = False

 i = Int(Rnd * 10)

 lblTest.Caption = tname(i)

End Sub

Private Sub Form_Load()

 Dim i As Integer

 For i = 0 To 9

   optPicture(i).Value = False

  (6) 

 lblPrompt2.Visible = False

 lblAnswer.Visible = False

 lblEvaluate.Visible = False

 tname(0)= "禁止向左向右转弯"

 tname(1)= "禁止直行和向右转弯道"

 tname(2)= "禁止直行和向左转弯"

 tname(3)= "禁止驶入"

 tname(4)= "禁止掉头"

 tname(5)= "禁止车辆长时停放"

 tname(6)= "禁止机动车通行"

 tname(7)= "禁止非机动车通行"

 tname(8)= "禁止超车"

 tname(9)= "禁止车辆临时或长时停放"

End Sub

Private Sub optPicture_Click(Index As Integer)

 lblPrompt2.Visible = True

 lblAnswer.Visible =(7) 

 lblEvaluate.Visible = True

 lblAnswer. Caption=(8) 

 If (9) Then

   lblEvaluate.ForeColor = vbRed

   lblEvaluate.Caption = " 恭喜你!回答正确!"

 Else

   lblEvaluate.ForeColor = vbBlue

   lblEvaluate.Caption= "很遗憾,回答错误。"

 End If

End Sub

请根据图2-15和图2-16的显示效果和【Visual Basic程序】,将表2-15中窗体对象、单选按钮控件数组对象的(1)~(3)空缺处的属性值填写完整。

1

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内[说明]

 本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。

 方格的序号如下图所示。程序采用试探法,从序号为0的方格开始,依次为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数;如不能为当前方格寻找一个合理的可填整数,就要后退到前一方格,调整前一方格的填入整数;当序号为8的方格也填入合理的整数后,就找到了一个解。

      

 为检查当前方格所填整数的合理性,程序引入数组CheckMatrix,存放需要进行合理性检查的相邻方格的序号。事实上,CheckMatrix中只要求第i个方格中的数向前兼容,即填写第4个方格时,只检查在它之前、与之相邻的第1,3个方格是否满足和为素数的条件。

[程序]

#include <stdio.h>

int pos,a[9],b[11];  /*用于存储方格所填入的整数*/

void write(int a[]) /*方格输出函数*/

{ ……}

int isPrime(int m)  /*素数判断函数,若m为素数则返回1,否则返回0*/

{ ……}

int selectNum(int start)  /*找到start到10之间尚未使用过的最小的数,若没有则返回0*/

{ int j;

 for(j=start;j<=10;j++) if(b[j]) return j;

 return0;

}

int check()    /*检查填入pos位置的整数是否合理*/

{ int i,j

 int checkMatrix[][3]={{-1},{0,-1},{1,-1},{0,-1},{1,3,-1},{2,4,-1},{3,- 1},{4,6,-1},{5,7,-1}};

 for(i=0;(j=(1))>=0;i++)

    if(! isPrime((2)))return 0;

 return 1;

}

void extend()  /*为下一方格找一个尚未使用过的整数*/

{ (3)=selectNum(1);

  b[a[pos]]=0;

}

void change()   /*为当前方格找下一个尚未使用过的整数,若找不到则回溯*/

{ int j;

  while(pos>=0&&(j=selectNum(a[pos]+1))= =0) b[a[pos- -]]=1;

  if(pos<0)return;

  (4);a[pos] =j;b[j]=0; }

void find()

{ int k=1;

 pos=0;a[pos]=1;b[a[pos]]=0;

 do{

 if(ok)

    if( (5) ){

      write(a);change();

    }

    else extend();

   else change();

   k=check(pos);

 }while(pos>=0);

}

void main()

{ int i;

 for(i=1;i<=10;i++)b[i]=1;

 find();

}