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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(初级程序员下午试题88.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

初级程序员下午试题88.docx

1、初级程序员下午试题88初级程序员下午试题-88(总分:120.00,做题时间:90分钟)一、试题一(总题数:1,分数:15.00)1.【流程图】下面的流程图描述了对16位二进制整数求补的算法。计算过程是:从二进制数的低位 (最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。例如:对二进制整数10111001 10101000求补的结果是01000110 01011000。设16位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT1BIT16中。例如,二进制整数10111

2、001 10101000存放在数组BIT后,就有BIT11=0, BIT2=0,BIT15=0,BIT16=1。流程图(如图1所示)中 (1) 处按“循环变量名:循环初值,增量,循环终值”格式描述。若流程图中存在空操作,则用NOP表示。(分数:15.00)填空项1:_(正确答案:i: 1, 1, 16 (2)1-sw (3)0BITi(4) NOP,或空操作 (5)1-BITi)解析:解析 该流程图的功能在说明中已经解释了,要解该题关键要搞清楚流程图中引用的变量sw的含义。通过阅读流程图的说明和流程图可知,变量sw主要用来定义是否已经找到某一位是“1”:当sw=0时,说明到目前为止还没有哪一位

3、是“1”,不需要对该位求反;当sw=1时,说明已经有一位是“1”,需要对该位求反。先来看(1)空。(1)空是要写出循环变量名、循环初值、增量和循环终值,该题要从遍历整型数组BIT的所有元素,从BIT1开始到BIT 16结束,再看流程图的第1个判断用的变量是i,这样就可判断循环变量名为i,循环初值为1,增量为1,循环终值为16。这样(1)空的答案为“i:1,1,6”。在这个循环中,当第i位是1时,即BIT(i)=1,进入左分支。这时需要判断sw值,若sw=0,需要将sw置为1;“若sw=1,需要对将BIT(i)置为 0。这样(2)空的答案为“1-sw”;(3)空的答案为“0-BITi”。同样,当

4、第i位是。时,即BIT(i)=0,进入右分支。这时需要判断 sw值,若sw=0,将不作任何操作;若sw=1,需要对将BIT(i)置为1。这样(4)空的答案为“NOP”;(5)空的答案为“1-BITi”。二、试题二(总题数:1,分数:15.00)2.【说明】程序8用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额,职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于0结束。假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金

5、额800元后的余额作为该月的月应纳税所得额。适用税率如表2所示。表 2级数月应纳税所得额适用税率(%)123456789不超过500元的部分501元2000元的部分2001元5000元的部分5001元2000元的部分2001元4000元的部分4001元6000元的部分6001元8000元的部分8001元100000元的部分超过100000元的部分 51015202530354045上表表明,个人收入所得税是按照超额累进的税率来征收的。设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S (元);若0K500,则S=K5%;若500K2000,则S=5005%+(K-50

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

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

8、=0, K,S;int i,j,N=0,Code;scanf(%d %Id,&Code,&Wage);while(Code0)i=find (Code, empolyee, N );if(i0)employee i. Salary+=Wage;else (2) ;employeeN. Id=Code;employeeN. Salary =Wage;scanf(%d %Id, &Code, &Wage);for(i=1;i=N;i+) K= (3) ; /*计算月应纳税所得额*/S=0; /*月应纳税额赋初值*/if(K0) for(j=1;j9;j+)if (4) /*月应纳税所得额超过第j级

9、*/S=S+(paylevelj-paylevelj-1)*taxPratej-1/100;elseS =S+ (5) * taxPratej-1/100; break; printf(职工%d应缴纳的个人所得税额:%10.21f/n,employeei.Id,S);sum+=S;printf(全体职工个人所得税总额:%10.21f/n,sum);(分数:15.00)填空项1:_(正确答案:employeej.Id!=Id (2) +N 或N+或N=N+1(3) employee i. Salary-BASE(4) Kpaylevelj (5)K-paylevelj-1)解析:解析 (1)fi

10、nd函数的功能是找到了号为Id的职工在数组employee中的下标。显然,循环进行下去的条件是employeejId!=Id。 (2)当i=0时,表明该职工的信息是第一次录入,所以应当在数组employee中创建一个新元素,于是此处应填入N+或其他等价表达式。 (3)K表示该月应纳的所得税额,所以应填入employeei.SalaryBASE。(4)此处是判断当前职工的工资是否超过第j级,所以应填入 Kpaylevelj)。(5)当前职工的工资不超过第j级,应当计算它与第j-1级的差额的所得税,所以应填入K-paylevelj-1。三、试题三(总题数:1,分数:15.00)3.【说明】下面的程

11、序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上例如:位置:0 1 2 3 4 5 6 7源字符串:h g f e a b c d则处理后字符串:d c b a h g f e函数ReadDat()实现从文件in.dat中读取数据(每行字符串长度均小于80),函数WriteDat()把结果dat输出到文件out.dat中。#includestdio.h#includesiring.h#includeconio.hch

12、ar dat20 80;void jsSort()int i,j,k,strl;char ch;for(i=0;i20;i+)strl=strlen(datei);for(j= (1) ;jstrl;j+) /*对后半部分的字符串进行排序*/for(k=j+1;kstrl;k+)if( (2) )ch=dati j;doti j=dati k;dati k=ch;for(j=0; (3) j+) /*前后两部分进行交换*/ch = date i j;dote i j = date i (strl+1)/2+j;dat i (strl+1)/2+j=ch;void main()reodDat()

13、;isSort();writeDot();readDat ()FILE * in;int i=0;char * p;(4) ;while(i20 & fgets(dati,80,in)!=NULL)p = strchr(date i,/n);if(p) *p=0;i+;fclose (in);writeDat()FILE * out;int i;clrscr ();out = fopen(out. dat ,W);for(i=0;i20;i+)printf(%s/n,dari);printf ( (5) );fclose (out);(分数:15.00)填空项1:_(正确答案:(strl+1)

14、/2 (2)datijdatik(3)jstrl/2 (4)in=fopen(in. dat,r)(5)out,% s/n,dati)解析:解析 程序的思路是:先调用函数ReadDat()从文件in.dat中读取20行数据存放到字符中数组dat中,然后调用函数jsSort()对字符串数组dar按照排序规则进行排序,排序后的结果仍按行重新存入字符串数组dat中,最后调用函数WriteDat()把结果dat输出到文件out.dat中。(1)、(2)空所在的两重循环是对一行字符串的后半部分按字符的 ASCII值降序排序,这是一个简单的冒泡排序。考虑到如果原字符串长度为奇数,则最中间的字符不参加排序,

15、因此应从第(strl+1)/2个元素开始排序,这就是(1)空所填的内容。由于是按字符的ASCII值降序排序,因此当datijdatik时就要进行数据交换,这就是 (2)空所填的内容。(3)空所在的循环是进行前后两部分数据交换,因此,结束条件应为strl/2,因此空(3)应填“jstrl/2”。(4)空所在函数是读取数据函数。在读取数据前先要以只读方式打开数据文件in.dat,因此空(4)处应填写“in=fopen(in.dat,r)”。(5)空所在函数是写入排序结果函数。在(5)空所在行是把dati一行写入到out.dat中,应此(5)空处应填写“out,%s/n,dati”。四、试题四(总题

16、数:1,分数:15.00)4.【说明4.1】 假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:typedef struct DateType data MaxSize;int front2,rear2;Queue2;对于i=0或1,fronti和reari分别为第i个队列的头指针和尾指针。函数EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第i个队列的入队操作。【函数4.1】 int EnQueue(Queue2 * Q, int i, DateType x)/*若第i个队列不满,则元素x入队列,并返回1;否则,返回0*/if(

17、i0i1) return 0;if(Q-reari=Q-front (1) return 0;Q-data (2) =x;Q-reari= (3) ;return 1;【说明4.2】函数BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。已知二叉树中的结点类型BinTreeNode定义为:struct BinTreeNode char data;BinTreeNode * left

18、, * right;其中dau为结点值域,leR和risht分别为指向左、右子女结点的指针域,【函数4.2】int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2)if(Ti = NULL & T2 = NULL)return 1 /*若两棵树均为空,则相等*/else if( (4) )return 0; /*若一棵为空一棵不为空,则不等*/else if( (5) ) return 1; /*若根结点值相等并且左、右子树*/*也相等,则两棵树相等,否则不等*/else return 0; (分数:15.00)填空项1:_(正确答案:(i+1)%2

19、(或1-i) (2)Q-reari(3)(Q-reari+)%Maxsize(4)T1=NULLT2=NULL (5)T1-data=T2- data & BTreeEqual(T1-left,T2-left) & BTreeEqual (T1-right, T2-right))解析:解析 这一题共有两个函数,第一个函数是一个循环共享队列入队的的问题,第二个函数是用递归法判断两棵二叉树是否相等的问题。先分析第一个函数。(1)空所在if语句是判断是否能入队,当队列0入队时,如果队列0队尾指针与队列1队头指针相等时,说明队列 0无法入队;当队列1入队时,如果队列1队尾指针与队列0队头指针相等时,说

20、明队列1无法入队。因此(1)空处应填写“(i+1)%2”或“1-i”。(2)、(3)空是入队操作,其操作步骤是先将元素x插入队列i队尾所指的位置,再将队尾“加1”。因此(2)空处应填写“Q-reari”;由于是一个循环队列,(3)空处应填写“(Q-reari+1)%Maxsize”。再分析第二个函数。这一题比较简单,只需将程序注释转换成C语言即可得到答案。(4)空所处理的是若一棵为空,而一棵不为空则不相等,显然(4)空应填入“TI=NULLT2=NULL”。(5)空处是一个递归调用,处理若根结点值相等并且左、右子树也相等,则两棵树相等,因此(5)空应填入“T1-data=T2data & BT

21、reeEqual(T1-left, T2-left) &BTreeEqual(Tl-right, T2-right)”及其等价形式。五、试题五(总题数:1,分数:15.00)5.1】【应用说明5.1】本应用程序的窗体中有一个下拉式列表框(名称为Combo1)和两个文本框(名称分别为 Txt1和Txt2)。运行时,用户从Combo1的列表中进行选择,程序就会将选中条目的内容以及编号(从0开始)分别在文本框Txt1和Txt2中显示出来。【程序代码5.1】Private Sub Combo1_Click()Txt1.Text = Combo1. (1) Txt2.Text = Combo1. (2)

22、 End Sub(注:可供(2)处选择的选项:List, Index, Listlndex, ListCount, Number)【应用说明5.2】本应用程序的运行窗口如图2所示。开发该应用的部分程序代码如下:【程序代码5.2】Private Sub CmbOp_Click()Dim Dataln As Double,DataOut as DoubleDataln= (3) Select Case (4) Case 取整数部分DataOut =Int(Dataln)Case 求平方根If Dataln0 ThenMagBox 负数不能开平方!ElseDataOut = Sqr(Dataln)E

23、nd IfCase 取绝对值DataOut = Abs(Dataln)(5) TxtOut. Text = str $ (DataOut)End Sub(分数:15.00)填空项1:_(正确答案:Text (2)Listlndex (3)Val(Txtln.Text)或Txtln.Text(4)CmbOp.Text (5) End Select)解析:解析 (1)组合框的Text属性用于取得文本。(2)组合框的Listlndex属性用于取得选中的项的编号。(3)此处的Val(Txtln.Text)或 Txtln.Text能够取得用户的输入。(4)此处以组合框的当前值做为分支依据。(5)此处是分

24、支语句结束,应当填结束标志。六、试题六(总题数:1,分数:15.00)6.【说明】下面程序的功能是显示已定义的一个3行3列的二维数组每行的元素,并求所有元素的和并输出。请在程序的每条横线处填写一个适当的语句,使程序的功能完整。public class Arrayt(1) static (2) main(String args)int sum=0;int = t 11,12,13, 21,22,23,31,32,33;for(int i=0; (3) i+)System. out. print(b+i+:);for(int j=0; (4) j+)System. out. print(bi j

25、+ );(5) System. out. println ();System. out. println(sum=+sum);(分数:15.00)填空项1:_(正确答案:public (2)void (3)i3;或等价形式(4)j3;或等价形式 (5)sum+bij;或等价形式)解析:解析 (1)空为Java主函数的修饰符,是固定写法。(2)空Java主函数不需要返回值,这也是固定写法。(3)空数组共有3行,所以循环3次。(4)空数组共有3列,所以循环3次。(5)空是将bij累加到sum中。七、试题七(总题数:1,分数:15.00)7.【说明】某学校举办了一场奥运知识竞赛,参加竞赛的选手为20

26、0名,1200为选手编号。竞赛时间为9:0011:00。8道竞赛题目依次从“A”“H”编号,选手可按任意次序答题,每完成一道题目,可立即提交答案。若答案正确(Y),则选择其他题目进行解答,否则,可继续做该题目或选择其他题目进行解答,直至竞赛结束。选手提交答案的情况及判定结果由专人即时录入,录入数据包括提交答案的时间、选手编号、题目编号(AH)、是否正确(Y/N)等。对竞赛情况进行统计和排名的规则如下:1若选手X在竞赛时提交的题目P解答正确,则解答该题目所用时间计算如下:解答题目P的用时=提交题目P正确的时间-竞赛的开始时间+罚时,罚时=提交题目P错误解答的次数20例如:表1中14号选手在10:

27、27提交了题目A的正确解答,因此该选手正确解答该题目所用时间P为87分钟,由于他在09:37和09:52两次提交了题目A的错误解答,因此罚时为(220)分钟=40分钟,所以14号选手解答题目A的用时=(87+ 40)分钟:127分钟。2已经提交正确答案的题目再次提交时不再计算。3竞赛结束时,选手的总用时为所有解答正确的题目用时累加所得,解答不正确的题目不计时。4排名时,完成题目数量多者排名靠前;若完成的题目数相同,则用时少者排名靠前;若完成的题目数和所用时间均相等,则名次相同;完成题目数为。的选手不参加排名。本应用程序的运行窗口如图3所示。窗口中的两个文本框为Txt_time和Txt_play

28、er,分别用于录入提交答案的时间和选手编号。组合列表框Combo1提供题目编号(AH),录入时从中选择。检查框Chk_yn用于输入解答是否正确信息。当单击“确定”按钮(Cmd_comfirm)时,录入的提交信息加入列表框List1中,排名情况在列表框List2输出。单击“关闭”按钮时退出应用程序。在开发过程中,需要编写的部分程序代码如下:【程序】Private Type infoNo As Integer 选手编号Num As Integer 完成题目数量Time As Integer 完成题目的总用时d(8)As Integer d用于记录提交第i个题目错误答案的次数a(8)As Boole

29、an a用于记录第i个题目是否已经提交正确答案End TypeDim R(201)As info Rj用于统计编号为j的选手提交答案的情况Dim Maxlndex As Integer Maxlndex记录提交答案的选手中编号最大者Private Sub Form_Load()For i = 1 to 8Combo1. Addltem chr( (1) )NextCombo1. Text = Combo1. List(0):txt_time.Text = :txt_player.Text = For i = 1 To 200R(i) num=0:R(i).time =0:R(i).no=iForj = 1 To 8R(i).d(j) =0:R(i).a(j) =FalseNext j,iEnd SubPrivate Sub cmd_confirm_Click()Dim h, m, k, time As Integer, c

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

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