最全历年程序员软考考试下午真题合集.doc

上传人:小** 文档编号:545687 上传时间:2018-10-23 格式:DOC 页数:325 大小:3.15MB
返回 下载 相关 举报
最全历年程序员软考考试下午真题合集.doc_第1页
第1页 / 共325页
最全历年程序员软考考试下午真题合集.doc_第2页
第2页 / 共325页
点击查看更多>>
资源描述

《最全历年程序员软考考试下午真题合集.doc》由会员分享,可在线阅读,更多相关《最全历年程序员软考考试下午真题合集.doc(325页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、申明:此为 2004 上半年至今的所有程序员软考下午试题真题并且每套后面均配有答案,接近 30 套,每年两套。由于文件过大,拆成上午试题 和下午试题,在百度文 库同样 可以搜索“ 最全历年程序员软考考试上午真题合集“。此外还有模拟试题提供,百度文 库搜索“ 最全程序员软考考试上午模拟试题合集”和“最全程序员软考考试下午模拟试题合集”。注:如果图片显示不全,适当将 图片缩小即可。过来人总结,多做做下午场试题 ,最好打印。上午场试题对着电脑即可,只要不是一点不懂基本上午场没问题。初级程序员 2004 上半年下午试题1、试题 1阅读下列说明、流程图和算法,将应填入_处。流程 图说 明下面的流程图用

2、N-S盒图形式描述了数组 A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下 标端移动,大于基准数的元素向高下标端移动。当划分结 束时,基准数定位于 Ai,并且数组中下标小于 i的元素的值均小于基准数,下标大于 i的元素的值均大于基准数。设数组 A的下界为 low,上界 为high,数 组中的元素互不相同。例如,对数组(4,2, 8,3,6),以 4为基准数的划分过程如下:流程 图算法 说明 将上述划分的思想进一步用于被划分出的数组的 2部分,就可以对整个数组实现递增排序。设函数 int p(intA,int low,int high)实现了上述流程

3、图的划分过程并返回基准数在数组 A中的下标。递归函数 void sort(int A,int L,int H)的功能是实现数组 A中元素的 递增排序。算法 void sort(int A,int L,int H)if(LH)k=p(A,L,H); /*p()返回基准数所在数组 A中的下标 */sort( (4) ); /*小于基准数的元素排序 */sort( (5) ); /*大于基准数的元素排序 */;2、试题 2阅读下列函数说明和 C函数,将应填入_处的语句写在答题纸的对应栏内。函数 2.1说明函数 palindrome(char s)的功能是:判断字符串 s是否为回文字符串,若是, 则返

4、回 0,否 则返回-1。若一个字符串顺读和倒读都一样,称该字符串是回文字符串,例如,“LEVEL”是回文字符串,而“LEVAL”不是。函数 2.1int palindrome(char s)char *pi, *pj;pi=s;pj=s+strlen(s)-1;while(pipj& (1) ) pi+;pj-;if( (2) ) return-1;else return 0;函数 2.2说明函数 f(char *str,char del)的功能是:将非空字符串 str分割成若干个子字符串并输出,del 表示分割时的标志字符。例如,若 str的值为“33123333435” ,del的值为“3

5、” ,调用此函数后,将输出 3个子字符串,分别为“12” ,“4”和“5” 。函数 2.2void f(char *str,char del)int i,j,len;len=strlen(str);i=0;While(ilen)While( (3) )i+; /* 忽略连续的标志字符 */* 寻找从 stri开始直到标志字符出现的一个子字符串 */ji+1;while(strj!=del &strj!0)j+;(4) =0; /* 给找到的字符序列置字符串 结束标志 */printf(“%st“,&stri);(5) ;3、试题 3以下是与 Visual Basic开发应用有关的 5个问题。对

6、每个问题,请将答案填入答题纸的对应栏内。(1)在 Visual Basic中,工程文件、窗体文件和标准模块文件的扩展名是什么?从下列选项中选择: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

7、%;单击“缩小” 按钮就会使该图像框的长和宽都缩小 10%(该图像框的左上角不动) 。分别写出这 2个命令按钮的单击事件过程中的程序代码。(4)为使某个单选按钮初始时默认被选中,在开 发时应怎样做?(5)若有语句 TmpvalMsgBox(“非法操作!” ,vbOKCancel+vbCritical,“提示”),简要描述程序运行时弹出的消息框的主要特征。4、试题 4阅读以下说明和 C程序代 码,将应填入_处的语句写在答题纸的对应栏内。说 明函数 MultibaseOutput(long n,intB.的功能是:将一个无符号十进制整数 n转换成 B(2B16)进制数并输出。该函数先将转换过程中得

8、到的各位数字入栈,转换结束后再把 B进制数从 栈中输出。有关栈操作的诸函数功能见相应函数中的注释。 C代码中的符号常量及栈的类型定义如下:# define MAXSIZE 32typedef structint * elem; /* 栈的存储区 */int max; /* 栈的容量,即 栈中最多能存放的元素个数 */int top; /* 栈顶指针 */Stack;C代码int InitStack(Stack * S,int n) / * 创建容量 为 n的空栈 */ S-elem=(int *)malloc(n * sizeof(int);if(S-elem=NULL)return-1;S-

9、max=n; (1) =O;return 0;int Push(Stack * S,int item) / * 将整数 item压入栈顶 * / if(S-top=S-max) printf(“Stack is full! n”);return-1;(2) =item;return 0;int StackEmpty(StackS) return (! S.top)? 1:0; / * 判断栈是否为空 * /int Pop(Stack *S ) / * 栈顶元素出栈 * / if(! S-top)printf(“Pop an empty stack! n”);return-1;return (3

10、) ;void MultibaseOutput(long n,intB. int m;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(m10)printf(“%d” ,m); / * 小于 10,输出数字 * /else printf(“%c”,m+55); / * 大于或等于 10,输

11、出相应的字符 * /printf(“n”);5、试题 5阅读以下应用说明及 Visual Basic程序代码,将应真入_处的语句写在答题纸的对应栏内。应 用说明 5.1应用程序的窗体中有 1个下拉式列表框( 名称为 Combol)和 2个文本框(名称分别为Txt1和 Txt2)。运行时,用户从 Combo1的列表中进行选择,程序就会将选中条目的内容及编号(从 0开始 )分别在文本框 Txt1和 Txt2中显示出来。程序代 码 5.1Private Sub Combol_Click()Txt1,Text=Combol. (1) Txt2Text=Combol. (2) End Sub(注意:可供

12、(2)处选择的选项有 List,Index,ListIndex,LisCount,Number)应 用说明 5.2本应用程序的运行窗口如图 2-1所示。当用户在输入框(名为 TxtIn)中输入数值数据,并从下拉式列表框(名称为 CmbOp)中选择所需的运算后,输出框 (名为 TxtOut)中就会显示运算的 结果。用户单击“清除”按钮(名为 CmdClear)后,输入框和输出框都清空。程序代 码 5.2Private Sub CmbOp_Click()Dim DataIn As Double,DataOut as DoubleDataIn (3) Select Case (4) Case“取整数

13、部分”DataOut=Int(DataIn)Case“求平方根”If DataIn0 ThenMsgBox$(“负数不能开平方!”ElseDataOut=Sqr(DataIn)End IfCase“取绝对值”DataOut=Abs(DataIn)(5) TxtOut.Text=str$(DataOut)End Sub6、试题 6阅读下列函数说明和 C函数,将应填入_处的语句写在答题纸的对应栏内。函数 6说 明函数 DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表 A中关键码为 key1的结点开始的

14、 len个结点,按原顺序移至线性表 B中关键码为 key2的结点之前,若移动成功, 则返回 0;否则返回-1。线性表的存储结构为带头结点的单链表,La 为表 A的头指针, Lb为表 B的头指针。单链表结点的类型定义为:typedef struct node int key;struct node * next; * LinkedList;函数 6int DelA InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len) LinkedListp,q,s,prep,pres;int k;if(! La-next! Lb-next -ne

15、xt len0)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(s s & s-key!=key2) / * 查找表 B中键值为 k

16、ey2的结点 * /pres=s;s=s-next;if(! s)return-1; / * 表 B中不存在键值为 key2的结点 * /(4) =q-next; / * 将表 A中的 len个结点删除 * /q-next= (5) ;pres- next=p; / * 将 len个结点移至表 B * /return 0;7、试题 7阅读以下应用说明、属性设置及 Visual Basic程序代码,将应填入_处的语句写在答题纸的对应栏内。应 用说明 7本应用程序的运行窗口如图 2-5所示。只要用户单击“闪烁” 按钮,文字“ 欢迎光临”就会以 0.3s消失、0.3s 显示反复进行闪烁;单击“停止

17、”按钮,闪烁停止,恢复图示的初态。属性 设置 7程序代 码 7Private Sub CmdF C1ick()Timerl. (3) =TrueLabel.Visible=FalseEnd SubPrivate Sub Timerl_Timer()(4) =not Label.VisibleEnd SubPrivate Sub CmdT_Click()Timerl.Enabled= (5) Label.Vlsible=trueEnd Sub8、试题 8阅读下列程序说明和 C程序,将应填入_处的语句写在答题纸的对应栏内。程序 8说 明程序用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的

18、个人所得税总额。职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以 输入过程中每个 职工的收入会出现多次输入,整个输入以工号小于等于。结束。假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额 800元后的余额作为该月的月应纳税所得额。适用税率如表 2-1所示。上表表明,个人收入所得税是按照超额累计的税率来征收的。设一个人的月应纳税所得额为 K(元),用下面的公式计算其应缴纳的个人所得税额S(元 ):若 0K500,则 S=K5%;若 500K2000,则 S=5005%+(K-500)10%;若 2

19、000 K5000,则 S=5005%+150010%+(K-2000)15%;若 5000 K20000,则 S=5005%+150010%+300015%+(K-5000)20%,例如,某人某月收入总额为 4100元,减去 800元后,应纳税所得额为 3300元,其应缴纳的个人所得税额为 5005%+150010%+130015%370 元。程序 8#includestdio.h#define MaxNum 50#define BASE 800 / * 免税金额基数 * /int paylevel=0,500,2000,5000,20000,40000,60000,80000,100000

20、,1000001;int taxPrate=5,10,15,20,25,30,35,40,45; / * 税率表 * /typedef structint Id; / * 职工的工号 * /long Salary; / * 职工的工资 * /Info;/ * 查找工号为 Id的 职工在数组 employee中的下 标,返回值为 0表示没有 * /int find(int Id,Info employee,iht m)int j;employeeO.Id=Id;for(j=m; (1) ;j-);return j;void main(vpid)Info employeeMaxNUm+1);lon

21、g Wage;double sum=0,K,S;int i,j,N=0,Code;scanf(“%d %Id”,&Code,&Wage); / * 读入职工号、工资或薪金 * /while(Code0)i=find(Code,employee,N);if(i0)employeei.Salary+=Wage;else (2) employeeN.Id=Code;employeeN.Salary=Wage;scanf(“%d %”,&Code,&Wage);for(i=1;i=N ;i+)K= (3) ; / * 计算月应纳税所得额 * /S=0; / * 月应纳税额赋初值 * /if(K0)fo

22、r(j=1;j=9;j+)if( (4) ) / * 月应纳税所得额超过第 j级 * /S=S+(Paylevelj-paylevelj-1)*taxPratej-1/100;elseS=S+( (5) )*taxPratej-1/100;break;printf(“职工%d 应缴纳的个人所得税额:%10.2Ifn” ,employeei.ld,S);sum+=S;printf(“全体职工个人所得税总额:%10.2Ifn” ,sum);9、试题 9阅读以下应用说明及 Visual Basic程序代码,将应填入_处的语句写在答题纸的对应栏内。应 用说明 9本应用程序的运行窗口如图 2-6所示。窗

23、口中的 3个文本框和 2个按钮,名称分别为Txt_salary,Txt_base,Txt_tax,Cmd compute和 Cmd_quit。运行时,文本框Txt_base中存放的是免税金额基数(应扣除的基本费用 )。当用户在文本框 Txt_salary中输入月收入(工资或薪金)并单击“计算”按钮 Cmd_compute后,Txt_tax 框中就显示计算所得的应纳税额。文本框 Txt_base和 Txt_ tax在运行时不接受用户输入,Txt_base的内容以灰色 显示。个人工资(或薪金) 所得税是按照超额累进的税率来征收的,其计算方法参考试题 8。程序代 码 9Option Base 0Pr

24、ivate Sub Cmd_compute_Click()Dim paylevel,taxPratepaylevel=Array(0,500,2000,5000,20000,40000,60000,80000,100000,1000001)taxPrate=Array(5,10,15,20,25,30,35,40,45)K= (1) S=0if(K0) ThenFor j=1 TO 9If (2) ThenS=S+(paylevel(j)-paylevel(j-1) * taxPrate(j-1)/100ElseS=S+( (3) ) * taxPrate(j-1)/100Exit ForEnd IfNext jEnd If(4) =Str$(S)End SubPrivate Sub Cmd_quit_Click()EndEnd SubPrivate Sub Form_Load()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com