[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷2及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷2及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷2及答案与解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 2及答案与解析 1 阅读下列算法说明和算法,将应填入 (n)处的语句写在答题纸的对应栏内。 【说明】 为了减少直接插入排序关键字的比较次数,本算法使用了二分 (折半 )插入法对一个无序数组 R1.n进行排序。排序思想是对一个待插入元素,先通过二分法 (折半 )找到插入位置,后移元素后将该元素插入到恰当位置 (假设 R中的元素互不相同 )。 【算法】 1变量声明 X: DataType i, j, low, high, mid, R0n) 2每循环一次插入一个 Ri 循环: i以 1为步长,从 2到 n,反复执行 准备 X -Ri; (1);
2、high -i-1; 找插入位置 循环:当 (2)时,反复执行 (3); 若 X.key Rmid.key 则 high -mid-1 否则 (4) 后移 循环: j以 -1为步长,从 (5),反复执行 Rj+1 -Rj 插入 Rlow -X 3算法结束 2 阅读下列函数说明和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明 2.1】 以下 C语言函数用二分插入法实现对整型数组 a中 n个数的排序功能。 【函数 2.1】 void fun1 (int a) int i,j,k,r,x,m; for(i=2;i =n;i+) (1); k=1;r=i-1; while(k =r) m=(
3、k+r)/2; if(x am)r=m-1; else (2); for(j=i-1;j =k;j-) aj+l=aj; (3); 【说明 2.2】 以下程序可以把从键盘上输入的十进制数 (long型 )以二十六进制形式输出。 【程序 2.2】 #include stdio.h main() charb16=0,l,2,3 ,4,5,6,7,8,9,A,B,C,D,E,F; int c64,d,i=0,base; long n; printf(“enter a number:n“); scanf(“%1d“, printf(“enter new basc:n“); scanf(“%d“, do
4、 ci=(4); i+; n=n/base; while(n!=0); printf(“transmite new base:n“); for(-i;i =0;-i) d=ci; printf(“%c“,(5); 3 阅读下列说明和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明】 本题给出四个函数,它们的功能分别是: 1 int push(PNODE*top, int e)是进栈函数,形参 top是栈顶指针的指针,形参 e是入栈元素。 2 int pop(PNODE*top, int*e)是出栈函数,形参 top是栈 顶指针的指针,形参 e作为返回出栈元素使用。 3 int enQu
5、eue(PNODE*tail, int e)是入队函数,形参 tail是队尾指针的指针,形参 e是入队元素。 4 int deQueue(PNODE*tail, int*e)是出队函数,形参 tail是队尾指针的指针,形参 e作为返回出队元素使用。 以上四个函数中,返回值为。表示操作成功,返回值为 -1表示操作失败。 栈是用链表实现的;队是用带有辅助结点 (头结点 )的单向循环链表实现的。两种链表的结点类型均为: typedef struct node int value; struct node * next; NODE, * PNODE; 【函数 1】 int push(PNOOE * t
6、op,int e) PNODE p = (PNODE) malloc (sizeof (NODE); if (! p) return-1; p- value=e; (1); *top=p; return 0; 【函数 2】 int pop (PNODE * top,int * e) PNODE p = * top; if(p = NULL) return-1; * e = p- value; (2); free(p); return 0; 【函数 3】 int enQueue (PNODE * tail,int e) PNODE p,t; t= *tail; p = (PNODE) mallo
7、c(sizeof(NODE); if(!p) return-1; p- value=e; p- next=t- next; (3); * tail = p; return 0; 【函数 4】 int deQueue(PNODE * tail,int * e) PNODE p,q; if( * tail)- next = * tail) return-1; p= (* tail)- next; q = p - next; * e =q - value; (4)=q- next; if(,tail=q) (5); free(q); return 0; 4 【说明】 下面程序的功能是:在含有 10个
8、元素的数组中查找最大数,及最大数所在位置(即下标值 ),最大数可能不 止一个。 例如:若输入 2 8 5 7 8 4 8 3 2 8 则应输出 The max: 8 Total: 4 /最大数出现次数 The positions: 1 4 6 9 【函数】 #include stdio.h #define M 10 int fun(int* a,int * n,int pos ) int i, k max = - 32767; (1) for(i=0;i M;i+) if(2)max=ai; for(i=0;i M;i+) if(3)posk+=i; *n=k; return max; mai
9、n() int aM,posM,i=0j,n; printf(“Enter 10umber:“) for(i=0,i M;i+)scanf(“%d“,(4); j=fun(5); printf(“The max:%dn“,j); printf(“Total: %d“, n); printf(“The position:“) for (i=0; i n;i+) printf (“%4d“, posi); printf(“n“); 5 阅读以下应用说明及 Visual Basic程序代码,将应填入 (n)处的字句写在对应栏内。【说明 】 本应用程序的运行窗口如图 2所示。 窗口中的 3个文本框和两
10、个按钮名称分别为 Txt_salary、 Txt_base、 Txt_tax、 Cmd_compute和 Cmd_quit。运行时,文本框 Txt_base存放的是免税金额基数 (应扣除的基本费用 co)当用户在文本框 Txt_salary中输入月收入 (工资或薪金 )并单击 “计算 ”按钮 Cmd_compute后,Txt_tax框中就显示计算所得的应纳税额。文本框 Txt_base和 Txt_tax在运行时不接受用户输入, Txt_base的内容以灰色显示。 个人工资 (或薪金 )所得税是按照超额累进的税率来征收的,方法是:以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额,再
11、将应纳税所得额按相应级数采用相应的税率进行累进计算。目前的免税金额基数为 800元,税率如表 1所示。设一个人的月应纳税所得额为 K(元 ),用下面的公式计算其应缴纳的个人所得税额 S (元 ); 若 0 K500,则 S=K5%; 若 500 K2000,则 S=5005%+(K-500)10%; 若 2000 K5000,则 S=5005%+150010%+(K-2000)15%;若 5000 K20000,则 S=5005%+150010%+300015%+(K-5000)20%; 例如,某人某月工资总额为 4100元,减去 800元后,应纳税所得额为 3300元,其应缴纳的个人所得税额
12、为 500*5%+1500*10%+1300*15%=370元。 在开发过程中,需要编写的程序代码如下; 【程序】 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 =
13、 S + (paylevel(j) - paylevel(j -1) ) * taxPrate(j - 1)/100 Else S=S+(3)*taxPrate(j-1)/100 Exit For End If Next j Ent If (4)=Str (S) End Sub Private Sub Cmd_quit_Click( ) End End Sub Private Sub Form_Load() Txt_tax. Text =“ “ Txt_salaw. Text =“ “ Txt_base. Text = 800 Txt_tax. Locked = True Txt_base.
14、Enabled =(5) End Sub 6 阅读以下应用说明及 Visual Basic部分程序代码,将应填入 (n)处的字句写在对应栏内 。 【说明】 单击窗体上的 “测试 ”(cmdTest)按钮,出现一个输入框,要求输入一串字符,将该字符串中的非字母字符删除后,显示在窗体中的一个文本框 (txtShow)中。 【程序代码】 Private Sub cmdTest_Click( ) Dim strT1 ,strT2 As String Dim strCh As (1) Dim intL As Integer Dim intl As Integer strT1 =(2) (“请输入一串字符
15、 “, “字符串输入 “) intL =(3) strT2 = “ “ For intl = I To intL strCh = Mid ( strT1, intl, 1 ) If(strCh “A“And (4) ) Or (strCh “a“ And suCh “z“ )Then strT2 = strT2 + strCh End If Next intl txtShow. Text=(5) End sub 7 阅读以下说明和 C+程序,将应填入 (n)处的字句写在对应栏内。 【说明】 设计一个日期类 Date包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减
16、去天数、两日期相差的天数等。 在 Date类中设计如下重载运算符函数: Date operator + (int days) : 返回某日期加上天数得到的日期。 Date operator - (int days) : 返回某日期减去天数得到的日期。 int operator - (Date /day_tab二维数组存放各月天数,第一行对应非闰年,第二行对应闰年 class Date int year, month, day /年,月,日 int leap(int); /判断是否闰年 int dton(Date month = m; day = d; void setday(intd)day
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 答案 解析 DOC
