ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:164KB ,
资源ID:492461      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-492461.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]2004年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc)为本站会员(explodesoak291)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]2004年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc

1、2004年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读下列说明、流程图和算法,将应填入 _处。 流程图说明 下面的流程图用 N-S盒图形式描述了数组 A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,大于基准数的元素向高下标端移动。当划分结束时,基准数定位于 Ai,并且数组中下标小于 i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组 A的下界为 low,上界为 high,数组中的元素互不相同。例 如,对数组 (4, 2, 8, 3, 6),以 4为基准数的划分过程如下: 流程图 算法说

2、明 将上述划分的思想进一步用于被划分出的数组的 2部分,就可以对整个数组实现递增排序。设函数 int p(intA, int low, int high)实现了上述流程图的划分过程并返回基准数在数组 A中的下标。递归函数 void sort(int A, int L, int H)的功能是实现数组 A中元素的递增排序。 算法 void sort(int A, int L, int H) if(L H) k=p(A, L, H); /*p()返回基准数所在数组 A中的下标 */ sort( (4) ); /*小于基准数的元素排序 */ sort( (5) ); /*大于基准数的元素排序 */ ;

3、 2 阅读下列函数说明和 C函数,将应填入 _处的语句写在答题纸的对应栏内。 函数 2.1说明 函数 palindrome(char s)的功能是:判断字符串 s是否为回文字符串,若是,则返回 0,否则返回 -1。若一个字符串顺读和倒读都一样,称该字符串是回文字符串,例如, “LEVEL”是回文字符串,而 “LEVAL”不是。 函数 2.1 int palindrome(char s) char *pi, *pj; pi=s; pj=s+strlen(s)-1; while(pi pj& (1) ) pi+; pj-; if( (2) ) return-1; else return 0; 函数

4、 2.2说明 函数 f(char *str, char del)的功能是:将非空字符串 str分割成若干个子字符串并输出,del表示分割时的标志字符。 例如,若 str的值为 “33123333435”, del的值为 “3”,调用此函数后,将输出 3个子字符串,分别为 “12”, “4”和 “5”。 函数 2.2 void f(char *str, char del) int i, j, len; len=strlen(str); i=0; While(i len) While( (3) )i+; /* 忽略连续的标志字符 */ /* 寻找从 stri开始直到标志字符出现的一个子字符串 */

5、 j i+1; while(strj!=del &strj!0)j+; (4) =0; /* 给找到的字符序列置字符串结束标志 */ printf(“%st“, &stri); (5); 3 阅读下列函数说明和 C函数,将应填入 _处的语句写在答题纸的对应栏内。 函数 6说明 函数 DelA_InsB(LinkedList La, LinkedList Lb, int key1, int key2, int len)的功能是:将线性表 A中关键码为 key1 的结点开始的 len个结点,按原顺序移至线性表 B中关键码为 key2的结点之前,若移动成功,则返回 0;否则返回 -1。线性表的存储结

6、构为带头结点的单链 表,La为表 A的头指针, Lb为表 B的头指针。单链表结点的类型定义为: typedef struct node int key; struct node * next; * LinkedList; 函数 6 int DelA InsB(LinkedList La, LinkedList Lb, int key1, int key2, int len) LinkedListp, q, s, prep, pres; int k; if(! La- next! Lb- next- nextlen 0)return 1; p=La- next; prep=La; while(p

7、&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中键值为 key2的结点 * / pres=s; s=s- next;

8、if(! s)return-1; / * 表 B中不存在键值为 key2的结点 * / (4)=q- next; / * 将表 A中的 len个结点删除 * / q- next=(5); pres- next=p; / * 将 len个结点移至表 B * / return 0; 4 阅读以下说明和 C程序代码,将应填入 _处的语句写在答题纸的对应栏内。 说明 函数 MultibaseOutput(long n, int B)的功能是:将一个无符号十进制整数 n转换成 B(2B16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B进制数从栈中输出。有关栈操作的诸函数功能见

9、相应函数中的注释。 C代码中的符号常量及栈的类型定义如下: # define MAXSIZE 32 typedef struct int * 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- max=n; (1)=O; return 0; int

10、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); void Multibas

11、eOutput(long n, int B) 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(m 10)printf(“%d”, m); / * 小于 10,输出数字 * / else printf(“%c”, m+55); / * 大于或等于 10,输出相应

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

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

14、ct Case (4) Case“取整数部分 ” DataOut=Int(DataIn) Case“求平方根 ” If DataIn 0 Then MsgBox$(“负数不能开平方 !” Else DataOut=Sqr(DataIn) End If Case“取绝对值 ” DataOut=Abs(DataIn) (5) TxtOut.Text=str$(DataOut) End Sub 6 阅读以下应用说明、属性设置及 Visual Basic程序代码,将应填入 _处的语句写在答题纸的对应栏内。 应用说明 7 本应用程序的运行窗口如图 2-5所示。 只要用户单击 “闪烁 ”按钮,文字 “欢迎

15、光临 ”就会以 0.3s消失、0.3s显示反复进行闪烁;单击 “停止 ”按钮,闪烁停止,恢复图示的初态。 属性设置 7 程序代码 7 Private Sub CmdF C1ick() Timerl. (3)=True Label.Visible=False End Sub Private Sub Timerl_Timer() (4)=not Label.Visible End Sub Private Sub CmdT_Click() Timerl.Enabled=(5) Label.Vlsible=true End Sub 7 阅读以下应用说明及 Visual Basic程序代码,将应填入 _

16、处的语句写在答题纸的对应栏内。 应用说明 9 本应用程序的运行窗口如图 2-6所示。 窗口中的 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的内容以灰色显示。 个人工资 (或薪

17、金 )所得税是按照超额累进的税率来征收的,其计算方法参考试题 8。 程序代码 9 Option Base 0 Private Sub Cmd_compute_Click() Dim paylevel,taxPrate paylevel=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=0 if(K 0) Then For j=1 TO 9 If (2) Then S=S+(paylevel

18、(j)-paylevel(j-1) * taxPrate(j-1)/100 Else S=S+( (3) ) * taxPrate(j-1)/100 Exit For End If Next j End If (4)=Str$(S) End Sub Private Sub Cmd_quit_Click() End End Sub Private Sub Form_Load() Txt_tax.Text=“” Txt_salary.Text=“” Txt_base.Text=800 Txt_tax.Locked=True Txt_base.Enabled=(5) End Sub 8 以下是与 V

19、isual Basic开发应用有关的 5个问题。对每个 问题,请将答案填入答题纸的对应栏内。 (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个命

20、令按钮 “放大 ”和 “缩小 ”。单击 “放大 ”按钮就会使该图像框的长和宽都放大 10%;单击 “缩小 ”按钮就会使该图像框的长和宽都缩小 10%(该图像框的左上角不动 )。分别写出这 2个命令按钮的单击事件过程中的程序代码。 (4)为使某个单选按钮初始时默认被选中,在开发时应怎样做 ? (5)若有语句 Tmpval MsgBox(“非法操作 !”, vbOKCancel+vbCritical, “提示 ”),简要描述程序运行时弹出的消息框的主要特征。 9 阅读下列程序说明和 C+程序,将应填入 _处的语句写在答题 纸的对应栏内。 程序8说明 程序用于计算某公司每个职工应缴纳的个人所得税额和

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

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

23、0000, 40000,60000, 80000, 100000, 1000001; int taxPrate=5, 10, 15, 20, 25, 30, 35, 40, 45; / * 税率表 * / typedef struct int Id; / * 职工 的工号 * / long Salary; / * 职工的工资 * / Info; / * 查找工号为 Id 的职工在数组 employee中的下标,返回值为 0表示没有 * / int find(int Id, Info employee, iht m) int j; employeeO.Id=Id; for(j=m; (1) ;

24、j-); return j; void main(vpid) Info employeeMaxNUm+1); long 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(i 0)employeei.Salary+=Wage; else (2) employeeN.Id=Code; employeeN.Salary=Wage; scanf(“%d %”, &Code,

25、&Wage); for(i=1;i =N; i+) K=(3); / * 计 算月应纳税所得额 * / S=0; / * 月应纳税额赋初值 * / if(K0) for(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); 2004年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷答案与解析

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1