考试总分:8分
考试类型:模拟试题
作答时间:60分钟
已答人数:967
试卷答案:有
试卷介绍: 2006年下半年程序员下午试卷
A(1);/*取第i个学生所修课程链表的头指针*/while(p){if(
B(2)){sum=
C(3);count++;break;}/*if*/p=p->next;}/*while*/}
D(4);if(
E(5))avg=(double)sum/count;/*计算平均成绩*/returnavg;}/*func*/[15分]
A(1)AsInteger'声明全局变量PrivateSubCmdStart_Click()TimT.Enabled=TrueShpT.Visible=TrueEndSubPrivateSubCmdStop_Click()TimT.Enabled=FalseEndSubPrivateSubForm_Load()Dimi,HAsIntegerPicCurve.Scale(0,0)-(50,180)'设置图片框坐标系:左上角-右下角H=30'H等于图片框高度的六分之一Fori=0To4'设置5条水平线Ls(i)的位置Ls(i).X1=0'Ls(i)起点横坐标Ls(i).Y1=H*
B(2)'Ls(i)起点纵坐标Ls(i).X2=50'Ls(i)终点横坐标Ls(i).Y2=Ls(i).Y1'Ls(i)终点纵坐标Ls(i).BorderColor=&HC0C0C0'设置水平线颜色x=0'设置曲线坐标初值EndSubPrivateSubtimT_Timer()DimT,HAsInteger'T为即时温度,H为图片框中温度点显示高度T=Int(Rnd*181)+20'模拟随机产生设备温度(20~200度)'按当前温度显示水银柱H=ShpMeter.Height*
C(3)'算出水银柱的高度ShpT.Top=
D(4)-H'设置水银柱顶部位置ShpT.Height=H'设置水银柱的高度'绘制温度曲线y=
E(5)'算出曲线上当前点的纵坐标Ifx=51Then'当超出图片框时PicCurve.Cls'清除图片框内以前画的曲线x=0'设置重画曲线的初值ElseIfx>0Then'除左边点外PicCurve.Line(x-1,Lasty)-(x,y),vbRed'由前1点到当前点画红色线段EndIfx=x+1'准备下一点坐标Lasty=y'保存当前坐标供下次使用EndSub[15分]
A(1);第二步:点(i0,j0)的颜色值→oldcolor;创建栈S,并将点坐标(i0,j0)入栈;第三步:若
B(2),则转第七步;第四步:栈顶元素出栈→(x,y),并
C(3);第五步:1)若点(x,y-1)在图像中且G[x,y-1]等于oldcolor,则(x,y-1)入栈S;2)若点(x,y+1)在图像中且G[x,y+1]等于oldcolor,则(x,y+1)入栈S;3)若点(x-1,y)在图像中且G[x-1,y]等于oldcolor,则(x-1,y)入栈S;4)若点(x+1,y)在图像中且G[x+1,y]等于oldcolor,则(x+1,y)入栈S;第六步:转
D(4);第七步:算法结束。[问题]是否可以将算法中的栈换成队列?回答:
E(5)。[15分]
A(1)){fgets(str,80,fp);/*读入一张选票数据*/for(tag=0,i=0;
B(2);i++)if(str[i]=='1')tag++;if(
C(3)){/*若是有效选票,则进行统计*/
D(4);for(i=0;i<n;i++)if(str[i]=='1')
E(5);}}returnq;}/*statistic*/[15分]
A(1);/*设置转置矩阵MT行数、列数和非零元数目*/MT.cols=
B(2);MT.elements=M.elements;if(M.elements>0){for(q=0;q<M.cols;q++)num[q]=0;for(t=0;t<M.elements;++t)/*计算矩阵M中每一列非零元素数目*/num[M.data[t].c]++;/*计算矩阵M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置*/
C(3);for(j=1;j<M.cols;j++)cpot[j]=
D(4);/*以下代码完成转置矩阵MT三元组顺序表元素的设置*/for(t=0;t<M.elements;t++){j=
E(5);/*取矩阵M的一个非零元素的列号存入j*//*q为该非零元素在转置矩阵MT三元组顺序表中的位置(下标)*/q=cpot[j];MT.data[q].r=M.data[t].c;MT.data[q].c=M.data[t].r;MT.data[q].e=M.data[t].e;++cpot[j];/*计算M中第j列的下一个非零元素的目的位置*/}/*for*/}/*if*/free(num);free(cpot);/*此处输出矩阵元素,代码省略*/returnOK;}/*TransposeMatrix*/[15分]
A(1)。[应用4.2]设应用程序的运行窗口内有两个文本框Txt1和Txt2,其初始内容为空。在Txt1文本框中输入一个数值,当光标离开此文本框(例如进入文本框Txt2)时,执行的程序代码如下:PrivateSubTxt1_LostFocus()dimxasdoublex=Val(Txt1.Text)Ifx100ThenTxt1.Text=""MsgBox$("请重新输入!")Txt1.SetFocusElseTxt2.Text=Txt1.TextEndIfEndSub该程序代码的功能是:若在文本框Txt1中输入的数值小于0或大于100,当光标离开此文本框时,
B(2);否则,将其值复制到文本框Txt2中。[应用4.3]在下面的应用中,当窗口内发生Click事件时,窗口内将显示如图4-1所示的杨辉三角形(每一行都是二项式展开的系数)。请完善程序代码PrivateSubForm_Click()Dimi,j,cAsInteger,StrTempAsStringDima(9)AsIntegera(0)=0:a(1)=1StrTemp=Str(a(1))+Space
C(3)CurrentX=(ScaleWidth-TextWidth(StrTemp))/2PrintStrTempForj=2To9a(j)=1Forc=j-1To2Step-1a(c)=(3)Next
D(4)=""Forc=1TojStrTemp=StrTemp&Str(
E(5))&Space(5-Len(Str(a(c))))NextCurrentX=(ScaleWidth-TextWidth(StrTemp))/2PrintStrTempNextEndSub[15分]
A(1)printTicket(){coutprintTicket();}};classHeadDecorator:publicDecorator{public:HeadDecorator(SalesTicket*t):
B(2){}voidprintTicket(){cout<<"这是票据的台头!"<<endl;Decorator::printTicket();}};classFootDecorator:publicDecorator{public:FootDecorator(SalesTicket*t):
C(3){}voidprintTicket(){Decorator::printTicket();cout<<"这是票据的脚注!"<<endl;}};voidmain(void){SalesTickett;FootDecoratorf(&t);HeadDecoratorh(
D(4));h.printTicket();cout<<"------------------------"<<endl;FootDecoratora(NULL);HeadDecoratorb(
E(5));b.printTicket();}[15分]
A(1);}publicvoidprintTicket(){System.out.println("这是票据的台头!");super.printTicket();}}publicclassFootDecoratorextendsDecorator{publicFootDecorator(SalesTickett){
B(2);}publicvoidprintTicket(){super.printTicket();System.out.println("这是票据的脚注!");}}publicclassMain{publicstaticvoidmain(String[]args){T=newHeadDecorator(
C(3));T.
D(4);System.out.println("------------------------");T=newFootDecorator(
E(5));T.printTicket();}}[15分]