下半年计算机软考程序员下午真题及答案word+.docx

上传人:b****5 文档编号:3300215 上传时间:2022-11-21 格式:DOCX 页数:14 大小:179.28KB
下载 相关 举报
下半年计算机软考程序员下午真题及答案word+.docx_第1页
第1页 / 共14页
下半年计算机软考程序员下午真题及答案word+.docx_第2页
第2页 / 共14页
下半年计算机软考程序员下午真题及答案word+.docx_第3页
第3页 / 共14页
下半年计算机软考程序员下午真题及答案word+.docx_第4页
第4页 / 共14页
下半年计算机软考程序员下午真题及答案word+.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

下半年计算机软考程序员下午真题及答案word+.docx

《下半年计算机软考程序员下午真题及答案word+.docx》由会员分享,可在线阅读,更多相关《下半年计算机软考程序员下午真题及答案word+.docx(14页珍藏版)》请在冰豆网上搜索。

下半年计算机软考程序员下午真题及答案word+.docx

下半年计算机软考程序员下午真题及答案word+

05下半年软考程序员下午试题及答案

试题一(15分,每空3分)

  阅读下列说明和流程图,将应填入___(n)___处的字句写在答题纸的对应栏内。

[流程图说明]

  流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符的空白。

例如,原字符串"FileName",处理变成"FileName"。

流程图1-2、流程图1-3、流程图1-4分别详细描述了流程图1-1中的框A、B、C。

  假设原字符串中的各个字符依次存放在字符数组ch的各元素ch

(1)、ch

(2)、?

、ch(n)中,字符常量KB表示空白字符。

  流程图1-1的处理过程是:

先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j),然后将ch(i)、?

、ch(j)依次送入ch

(1)、ch

(2)、?

中。

如果字符串中没有字符或全是空白字符,则输出相应的说明。

在流程图中,strlen是取字符串长度函数。

[流程图1-1]

 

[流程图1-2]

 

[流程图1-3] 

 

[流程图1-4] 

 

[问题]

  在流程图1-1中,判断框P中的条件可表示为:

i>___(5)___ 

试题二(15,每空3分)

  阅读以下函数说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。

[说明]

  函数intfind_Max_Min(inta[],intn)的功能是:

找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。

查找方法如下:

比较a[0]和a[n-1],若a[0]大,则交换a[0]和a[n-1]的值;再比较a[1]和a[n-2],若a[1]大,则交换a[1]和a[n-2]的值;依此类推,直到所有的元素都比较完。

然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。

[函数]

  intfind_Max_Min(inta[],intn){

   /*找出n个元素的数组a中的最大元素、最小元素并输出,返回查找过程中元素的比较次数*/

   inti,Count=0;

   inttemp,Maxnum,Minnum;

   for(i=0;i

    Count=Count+1;      /*元素比较次数计数*/

    if(a[i]>a[_____

(1)_____]

    { /*数组元素交换代码略*/ }

   }

   Maxnum=a[n-1];

   Minnum=a[0];

   for(i=1;i

    Count=_____

(2)_____;             /*元素比较次数计数*/

    Minnum=_____(3)_____?

a[i]:

Minnum;      /*找出最小元素*/

    Maxnum=_____(4)_____?

_______(5)_____:

Maxnum;/*找出最大元素*/

   }printf("Max=%d\n,Maxnum");printf("Min=%d\n",Minnum);returnCount;

  }

 

[NextPage]

 

  试题三(15分,每空3分)

  阅读以下说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。

[说明]

  某种传感器的输出值Ratio依赖于环境温度temp(-40℃≦temp≦50℃)。

对一组环境温度值(ITEMS个),人们已经测量得到了相应的Ratio值(见表1)。

该表粗略地描述了曲线Ration(temp)。

 

  校正系数K是Ratio的倒数,因此也依赖于环境温度temp。

在数据处理中,人们需要用更多的列表值细致地描述曲线K(temp),如表2所示。

在表2中,各温度值所对应的K值是对表1进行线性插值再求倒数得到的,具体的计算方法如下:

  1.根据temp值,在表1中用二分法查找;

  2.若找到相应的温度值,则按相应的Ratio值求倒数得到K值;

  3.若没找到相应的温度值,则可确定temp所在的温度区间[Tp1,Tp2],同时获得了相应的Ratio1和Ratio2,再按如下公式计算K值:

   Step=(Ratio1-Ratio2)/(Tp1-Tp2)

   K=1.0/(Ratio1+Step*(temp-Tp1))

  在程序中,当temp高于50℃或低于-40℃时,设定K=0。

[程序]

  #includetypedefstruct{

    intTemp;   /*环境温度*/

    doubleRatio; /*传感器的输出值*/

  }CURVE;

  #defineITEMS7

  doubleGetK(int,CURVE*,int);

  voidmain()

  {intDegree;

   doublek;

   CURVECurve[ITEMS]={{-40,0.2},{-20,0.60},{-10,0.8},{0,1.0},

              {10,1.17},{30,1.50},{50,1.8}};

   printf("环境温度校正系数\n");

   for(Degree=-40;Degree<=50;Degree++){

    k=GetK(Degree,Curve,ITEMS);

    printf("%3d%4.2f\n",Degree,k);

   }

  } 

  doubleGetK(intTemp,CURVE*p,intn)

  {  /*用二分法在n个元素的有序表p中查找与Temp对应的传感器输出值*/

   intlow,high,m;

   doubleStep;

   low=0;

   high=n-1;

   if((TempTemp)||(Temp>(p+high)->Temp))

    return0.0;  /*超出温度范围时返回0.0*/

   while(low<=high){

    m=_____

(1)_____;

    if(Temp==(p+m)->Temp)

     return_____

(2)_____;

    if(Temp<(p+m)->Temp)high=m-1;

    elselow=_____(3)_____;

   }

   p+=high;Step=(_____(4)_____)/((p+1)->Temp-p->Temp);

   return1.0/(p->Ratio+Step*(_____(5)_____));

  } 

 

[NextPage]

 

  试题四至试题五选答1道

  试题四(15分,每空3分)

  阅读以下应用说明以及用VisualBasic开发过程中进行的属性设置和所编写的程序代码,将应填入_____(n)_____处的字句写在答题纸的对应栏内。

[应用说明]

  启动某应用程序运行的登录窗口如下:

 

  其中的标签(Label1)"用户名(U)"对应文本框Username,标签(Label2)"密码(P)"对应文本框"Password"。

当用户在Username文本框中输入用户名"ali88",在Password文本框中输入"zmkm"(显示的字符均为"*"),并单击"确定"按钮时,就会弹出应用程序的主窗口frmAPP,而该登录窗口就会卸载。

  如果用户名或密码输入错误,则会弹出报警信息框。

当用户单击其中的"确定"按钮后,登录窗口"Password"文本框的内容就会消失,光标停留在该框内,以便用户重新输入密码,必要时用户还可以再修改用户名,再次做登录尝试。

本应用程序允许发生3次输入错误。

在第3次输入错误后,就会立即退出该应用程序。

  在弹出登录窗口后,当按键"Alt+U"时光标就会停留在Usename文本框中;当按键"Alt+P"时光标就会停留在Password文本框中。

当用户按"Enter"键时,就相当于单击"确定"按钮;当用户按"Esc"键时,就相当于单击"取消"按钮,立即退出该应用程序。

[属性设置]

  在开发过程中,部分控件及属性设置如下:

 

[程序代码]

  PrivateSubcmdOK_Click()

   _____(3)_____AsInteger   '静态变量time的说明

   If___(4)___Then

    UnloadMe      '卸载本登录窗口

    ____(5)_____     '弹出应用程序主窗口frmAPP

   Else

    MsgBox("用户名密码错!

")

    Times=times+1

    Password.Text=""  '清除密码框中的内容

    Password.SetFocus  '将光标定位于密码框

   Iftimes=3Then

    End

   EndIf

  EndSub 

  PrivateSub

   cmdCancel_Click()

   End

  EndSub

  试题五(共15分)

  阅读以下说明和C语言函数,将应填入__(n)__处的字句写在答题纸的对应栏内。

[说明]

  二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:

若它的左子树非空,则左子树上所有结点的值小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二叉排序树。

  函数insert_BST(char*dtr)的功能是:

对给定的字符序列按照ASCII码值大小关系创建二叉排序树,并返回指向树根结点的指针。

序列中重复出现的字符只建一个结点,并由结点中的Count域对字符的重复次数进行计数。

  二叉排序树的链表结点类型定义如下:

  typedefstructBSTNode{

   charElem;    /*结点的字符数据*/

   intCount;    /*记录当前字符在序列中重复出现的次数*/

   structBSTNode*Lch,*Rch;  /*结点的左、右指针*/

  } *BiTree;

[函数]

  BiTreeinsert_BST(char*str){

   BiTreeroot,parent,p;

   char_______

(1)________;  /*变量定义及初始化*/

   root=(BiTree)malloc(sizeof(structBSTNode));

   if(!

root||*s=='\0')returnNULL;

   root->Lch=root->Rch=NULL;

   root->Count=1;

   root->Elem=*s++;

   for(;*s!

='\0';s++){

    ______

(2)______;

    parent=NULL;

    while(p){

    /*p从树根结点出发查找当前字符*s所在结点*/

     parent=p;

    if(*s==p->Elem)  /*若树中已存在当前字符结点,则当前的字符计数值加1*/

    {p->Count++;break;}

    else   /*否则根据字符*s与结点*p中字符的关系,进入*p的左子树或右子树*/

     if(*s>p->Elem)p=p->Rch;

     elsep=p->Lch;

    } /*while*/

    if(______(3)_____){/*若树中不存在字符值为*s的结点,则申请结点并插入树中*/

     p=(BiTree)malloc(sizeof(structBSTNode));

     if(!

p)returnNULL;

      p->Lch=p->Rch=NULL;

      p->Count=1;

      p->Elem=*s;

      /*根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树插入*/

     if(p->Elem>parent->Elem)______(4)_____=p;

     else_________(5)________=p;

    }

   }  /*for*/

   returnroot;

  }

 

[NextPage]

 

  从下列的3道试题(试题六至试题八)中任选1道解答。

如果解答的试题数超过1道,则题号小的1道解答有效。

  试题六(共15分)

  阅读以下说明和C++代码,将解答写入答题纸的对应栏内。

[说明]

  类Stock的定义中有三处错误,分别在代码的第04、06、10行。

请补齐下述代码中的空缺1,修改错误并给处修改后该行的完整代码,最后完善程序运行后的输出结果。

[C++代码] 

 

  程序运行后的输出结果为:

  1:

3.5

  _____

(2)_____

  _____(3)_____ 

  试题七(15分)

  阅读以下应用说明以及用VisualBasic编写的程序代码,将应填入_____(n)_____处的字句写在答题纸的对应栏内。

[应用说明]

  本应用程序的运行窗口中将显示一个简单的模拟时钟如下:

 

  该圆形钟面上有时针、分针和秒针在运动,不断显示系统的当前时间。

  在开发该喁喁时,首先建立一个圆形Shape控件作为钟面(背景为白色)。

设圆心为象素坐标(X0,Y0),半径为940。

再在圆心处建立一个小的实心圆Shape控件作为轴心。

钟面上的刻度3,6,9,12为四个标签。

时针、分针、秒针(红色)为线型控件,名称分别为LineH、LineM、LineS,线宽属性值分别为:

3,2,1,线长属性值分别为500,700,900。

这三个线型控件的起点坐标都固定在(X0,Y0)其终点坐标随转角θ而动态变化:

 

  设置定时器Timer1使该时钟能反映系统的当前时间,其定时间隔为0.5秒,该定时器的Interval属性值应设置为_____

(1)_____。

每隔0.5秒,秒针需要调整位置,但分针和时针只是在初始显示时以及在每次秒计数为0时才需要调整位置(可节省计算量)。

[程序代码]

  ConstPi=3.1416

  ConstX0=1750

  ConstY0=1150

  ConstLH=500,LM=700,LS=900PublicfirstAsBoolean

  PrivateSubForm_Load()

   LineS.X1=X0  '秒针的起点位置

   LineS.Y1=Y0

   LineM.X1=X0  '分针的起点位置

   LineM.Y1=Y0

   LineH.X1=X0  '时针的起点位置

   LineH.Y1=Y0

   first=True

  EndSub

  PrivateSubTimer1_Timer()

   S=Second(Time)

   S_seta=Pi*

   ______

(2)______  '秒针的转角

   LineS.X2=X0+LS*Sin(S_seta)   '秒针的终点位置

   LineS.Y2=Y0-LS*Cos(S_seta)

   If(____(3)_____)Then

    M=Minute(Time)

    LineM.X2=X0+LM*Sin(Pi*M/30)  '分针的终点位置

    LineM.Y2=Y0-LM*Cos(Pi*M/30)

    H=Hour(Time)

    If(H>=12)ThenH=H-12

    H_seta=Pi*(______(4)______)  '时针的转角

    LineH.X2=X0+LH*Sin(H_seta) '时针的终点位置

    LineH.Y2=Y0-Lh*Cos(H_seta)

    first=________(5)________

   EndIf

  EndSub 

  试题八(共15分)

  阅读以下说明和Java代码,将解答写入答题纸的对应栏内。

[说明]

  已知类Stock和类JavaMain都定义在JavaMain.java文件中,类Stock的定义中有四处错误,分别在代码的第01、02、06、07行。

请修改错误并给出修改后该行的完整代码,并写出改正错误后程序运行的输出结果。

[Java代码]

 

 

[NextPage]

 

  参考答案

  试题一

(1)i<=n

(2)ch(j)=KB

(3)k<=j

(4)ch(k-i+1)

(5)n

  试题二

(1)n-i-1

(2)Count+2

(3)a[i]

(4)a[n-i-1]>Maxnum

(5)a[n-i-1]

  试题三

(1)(low+high)/2

(2)1.0/(p+m)->Ratio

(3)m+1

(4)(p+1)->Ratio-p->Ratio

(5)Temp-p->Temp

  试题四

(1)密码(&p)

(2)true

(3)Statictimes

(4)Username.Text=″ali88″andPassword.Text=″zmkm″

(5)frmApp.Show

  试题五

(1)*s=str

(2)p=root

(3)p==NULL

(4)parent->Rch

(5)parent->Lch

  试题六

(1)shares(n)

04代码行修改结果:

public:

06代码行修改结果:

Stock(intn,doublepr=3.5):

shares(n){

10代码行修改结果:

~Stock(){}

输出结果

(2)0∶0

(3)0∶0

  试题七

(1)500

(2)S/30

(3)S=0orfirst

(4)H/6+M/360

(5)False

  试题八

01代码行修改结果:

classStock{

02代码行修改结果:

{

06代码行修改结果:

publicStock(){getData();}

07代码行修改结果:

publicStock(intn,doublepr){

程序运行的输出结果为:

0∶0.01∶67.5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1