您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 最全历年程序员软考考试下午真题合集(完整资料).doc
此文档下载后即可编辑申明:此为2004上半年至今的所有程序员软考下午试题真题并且每套后面均配有答案,接近30套,每年两套。由于文件过大,拆成上午试题和下午试题,在百度文库同样可以搜索“最全历年程序员软考考试上午真题合集“。此外还有模拟试题提供,百度文库搜索“最全程序员软考考试上午模拟试题合集”和“最全程序员软考考试下午模拟试题合集”。注:如果图片显示不全,适当将图片缩小即可。过来人总结,多做做下午场试题,最好打印。上午场试题对着电脑即可,只要不是一点不懂基本上午场没问题。初级程序员2004上半年下午试题1、试题1阅读下列说明、流程图和算法,将应填入______处。[流程图说明]下面的流程图用N-S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:[流程图][算法说明]将上述划分的思想进一步用于被划分出的数组的2部分,就可以对整个数组实现递增排序。设函数intp(intA[],intlow,inthigh)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数voidsort(intA[],intL,intH)的功能是实现数组A中元素的递增排序。[算法]voidsort(intA[],intL,intH){if(L<H){k=p(A,L,H);/*p()返回基准数所在数组A中的下标*/sort((4));/*小于基准数的元素排序*/sort((5));/*大于基准数的元素排序*/};}2、试题2阅读下列函数说明和C函数,将应填入______处的语句写在答题纸的对应栏内。[函数2.1说明]函数palindrome(chars[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样,称该字符串是回文字符串,例如,“LEVEL”是回文字符串,而“LEVAL”不是。[函数2.1]intpalindrome(chars[]){char*pi,*pj;pi=s;pj=s+strlen(s)-1;while(pi<pj&&(1)){pi++;pj--;}if((2))return-1;elsereturn0;}[函数2.2说明]函数f(char*str,chardel)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如,若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”,“4”和“5”。[函数2.2]voidf(char*str,chardel){inti,j,len;len=strlen(str);i=0;While(i<len){While((3))i++;/*忽略连续的标志字符*//*寻找从str[i]开始直到标志字符出现的一个子字符串*/j=i+1;while(str[j]!=del&&str[j]!'\0')j++;(4)='\0';/*给找到的字符序列置字符串结束标志*/printf(%s\t,&str[i]);(5);}}3、试题3以下是与VisualBasic开发应用有关的5个问题。对每个问题,请将答案填入答题纸的对应栏内。(1)在VisualBasic中,工程文件、窗体文件和标准模块文件的扩展名是什么?从下列选项中选择:prg,prj,exe,vbp,form,frm,win,fra,std,bas,vbs,vbm。(2)设某窗体上有1个命令按钮,其名称为CmdSave,运行时该按钮上显示有“保存(S)”字样的信息。为使热键Alt+S与该命令按钮相关联,应该对按钮CmdSave的Caption属性设置什么样的属性值?(3)设某窗口内有1个图像框Imagel及2个命令按钮“放大”和“缩小”。单击“放大”按钮就会使该图像框的长和宽都放大10%;单击“缩小”按钮就会使该图像框的长和宽都缩小10%(该图像框的左上角不动)。分别写出这2个命令按钮的单击事件过程中的程序代码。(4)为使某个单选按钮初始时默认被选中,在开发时应怎样做?(5)若有语句Tmpval=MsgBox(“非法操作!”,vbOKCancel+vbCritical,“提示”),简要描述程序运行时弹出的消息框的主要特征。4、试题4阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。[说明]函数MultibaseOutput(longn,intB.的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#defineMAXSIZE32typedefstruct{int*elem;/*栈的存储区*/intmax;/*栈的容量,即栈中最多能存放的元素个数*/inttop;/*栈顶指针*/}Stack;[C代码]intInitStack(Stack*S,intn)/*创建容量为n的空栈*/{S->elem=(int*)malloc(n*sizeof(int));if(S->elem==NULL)return-1;S->max=n;(1)=O;return0;}intPush(Stack*S,intitem)/*将整数item压入栈顶*/{if(S->top==S->max){printf(“Stackisfull!\n”);return-1;}(2)=item;return0;}intStackEmpty(StackS){return(!S.top)?1:0;}/*判断栈是否为空*/intPop(Stack*S)/*栈顶元素出栈*/{if(!S->top){printf(“Popanemptystack!\n”);return-1;}return(3);}voidMultibaseOutput(longn,intB.{intm;StackS;if(InitStack(&S,MAXSIZE.){printf(“Failure!\n”);return;}do{if(Push(&S,(4))){printf(“Failure!\n”);return;}n=(5);}while(n!=0);while(!StackEmpty(S)){/*输出B进制的数*/m=Pop(&S);if(m<10)printf(“%d”,m);/*小于10,输出数字*/elseprintf(“%c”,m+55);/*大于或等于10,输出相应的字符*/}printf(“\n”);}5、试题5阅读以下应用说明及VisualBasic程序代码,将应真入______处的语句写在答题纸的对应栏内。[应用说明5.1]应用程序的窗体中有1个下拉式列表框(名称为Combol)和2个文本框(名称分别为Txt1和Txt2)。运行时,用户从Combo1的列表中进行选择,程序就会将选中条目的内容及编号(从0开始)分别在文本框Txt1和Txt2中显示出来。[程序代码5.1]PrivateSubCombol_Click()Txt1,Text=Combol.(1)Txt2.Text=Combol.(2)EndSub(注意:可供(2)处选择的选项有List,Index,ListIndex,LisCount,Number)[应用说明5.2]本应用程序的运行窗口如图2-1所示。当用户在输入框(名为TxtIn)中输入数值数据,并从下拉式列表框(名称为CmbOp)中选择所需的运算后,输出框(名为TxtOut)中就会显示运算的结果。用户单击“清除”按钮(名为CmdClear)后,输入框和输出框都清空。[程序代码5.2]PrivateSubCmbOp_Click()DimDataInAsDouble,DataOutasDoubleDataIn=(3)SelectCase(4)Case“取整数部分”DataOut=Int(DataIn)Case“求平方根”IfDataIn<0ThenMsgBox$(“负数不能开平方!”ElseDataOut=Sqr(DataIn)EndIfCase“取绝对值”DataOut=Abs(DataIn)(5)TxtOut.Text=str$(DataOut)EndSub6、试题6阅读下列函数说明和C函数,将应填入______处的语句写在答题纸的对应栏内。[函数6说明]函数DelA_InsB(LinkedListLa,LinkedListLb,intkey1,intkey2,intlen)的功能是:将线性表A中关键码为key1的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为:typedefstructnode{intkey;structnode*next;}*LinkedList;[函数6]intDelAInsB(LinkedListLa,LinkedListLb,intkey1,intkey2,intlen){LinkedListp,q,s,prep,pres;intk;if(!La->next‖!Lb->next‖->next‖len<=0)return-1;p=La->next;prep=La;while(p&&p->key!=key1){/*查找表A中键值为key1的结点*/prep=p;p=p->next;}if(!p)return-1;/*表A中不存在键值为key1的结点*/q=p;k=1;while(q&&(1)){/*在表A中找出待删除的len个结点*/(2);k++;}if(!q)return-1:/*表A中不存在要被删除的len个结点*/s=Lb->next;(3);while(ss&&s->key!=key2){/*查找表B中键值为key2的结点*/pres=s;s=s->next;}if(!s)return-1;/*表B中不存在键值为key2的结点*/(4)=q->next;/*将表A中的len个结点删除*/q->next=(5);pres->next=p;/*将len个结点移至表B*/return0;}7、试题7阅读以下应用说明、属性设置及VisualBasic程序代码,将应填入______处的语句写在答题纸的对应栏内。[应用说明7]本应用程序的运行窗口如图2-5所示。只要用户单击“闪烁”按钮,文字“欢迎光临”就会以0.3s消失、0.3s显示反复进行闪烁;单击“停止”按钮,闪烁停止,恢复图示的初态。[属性设置7][程序代码7]PrivateSubCmdFC1ick()Timerl.(3)=TrueLabel.Visible=FalseEndSubPrivateSubTimerl_Timer()(4)=notLabel.VisibleEndSubPrivateSubCmdT_Click()Timerl.Enabled=(5)Label.Vlsible=trueEndSub8、试题8阅读下列程序说明和C程序,将应填入______处的语句写在答题纸的对应栏内。[程序8说明]程序用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额。职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于。结束。假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额800元后的余额作为该月的月应纳税所得额。适
本文标题:最全历年程序员软考考试下午真题合集(完整资料).doc
链接地址:https://www.777doc.com/doc-6671072 .html