[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷3及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷3及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷3及答案与解析.doc(11页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 3及答案与解析 1 阅读下列说明和流程图,将应填入 (n)的字句写在对应栏内。 【说明】 下列流程图 (如图 4所示 )用泰勒 (Taylor)展开式 sinx=x-x3/3!+x5/5!-x7/7!+( -1)nx2n+1/(2n+1)!+ 【流程图】 计算并打印 sinx 的近似值。其中用 ( 0)表示误差要求。 2 阅读下列程序说明和 C程序,将应填入 (n)处的字句写在对应栏内。【说明】 程序 8用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人 所得税总额,职工的当月收入 (工资或薪金 )通过键盘输入,每次输入一个职工的
2、工号和工资 (或薪金 )。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于 0结束。 假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额 800元后的余额作为该月的月应纳税所得额。适用税率如表 2所示。上表表明,个人收入所得税是按照超额累进的税率来征收的。 设一个人的月应纳税所得额为K(元 ),用下面的公式计算其应缴纳的个人所得税额 S (元 ); 若 0 K500,则S=K5%; 若 500 K2000,则 S=5005%+(K-500)10%; 若 2000 K5000,则S=5005%+150010%+(K-2
3、000)15%; 若 5000 K20000,则S=5005%+150010%+300015%+(K-5000)20%; . 例如,某人某月收入总额为4100元,减去 800元后,应纳税所得额为 3300元,其应缴纳的个人所得税额为500*5%+1500*10%+1300*15%=370元。 【程序】 #include stdio.h #define MaxNum 50 #define BASE 800 /*免税金额基数 */ int paylevel=0,500,2000,5000,20000,40000,60000,80000,100000,1000001; int taxPrate=5,
4、10,15,20,25,30,35,40,45; /*税率表 */ typedef struct int 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=0, K,S
5、; int i,j,N=0,Code; scanf(“%d %Id“, while(Code 0) i=find (Code, empolyee, N ); if(i0)employee i. Salary+=Wage; else(2); employeeN. Id=Code;employeeN. Salary =Wage; scanf(“%d %Id“, for(i=1;i =N;i+) K=(3); /*计算月应纳税所得额 */ S=0; /*月应纳税额赋初值 */ if(K 0) for(j=1;j 9;j+) if (4) /*月应纳税所得 额超过第 j级 */ S=S+(paylev
6、elj-paylevelj-1)*taxPratej-1/100; elseS =S+(5)* taxPratej-1/100; break; printf(“职工 %d应缴纳的个人所得税额: %10.21fn“,employeei.Id,S); sum+=S; printf(“全体职工个人所得税总额: %10.21fn“,sum); 3 阅读下列程序说明和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明】 下面的程序 功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的 ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字
7、符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上 例如:位置: 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中。 #include stdio.h #include siring.h #include conio.h char dat20 80; void jsSort() int i,j,k,strl; char ch; for(i=0;i 2
8、0;i+) strl=strlen(datei); for(j=(1);j strl;j+) /*对 后半部分的字符串进行排序 */ for(k=j+1;k strl;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(); isSort(); writeDot(); readDat () FILE *
9、in; int i=0; char * p; (4); while(i 20 if(p) *p=0; i+; fclose (in); writeDat() FILE * out; int i; clrscr (); out = fopen(“out. dat“ ,“W“); for(i=0;i 20;i+) printf(“%sn“,dari); printf (5); fclose (out); 4 阅读下列函举说明和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明 4.1】 假设两个队列共享一个循环向量空间 (如图 1-2所示 ),其类型 Queue2定义如下: typedef
10、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(i 0i 1) return 0; if(Q- reari=Q- front(1) return 0;
11、 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, * right; ; 其中 dau为结点值域, leR和 r
12、isht分别为指向左、右子女结点的指针域, 【函数 4.2】 int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2) if(Ti = NULL /*若一棵为空一棵不为空,则不等 */ else if(5) return 1; /*若根结点值相等并且左、右子树 */ /*也相等,则两 棵树相等,否则不等 */ else return 0; 5 阅读以下应用说明及 Visual Basic程序代码,将应填入 (n)处的字句写在对应栏内。 【说明】 已知窗体上有两个名为 cmdGene和 cmdSort的命令按钮。单击 cmdCene按钮时,随机产生 1
13、0个 1,100范围内的整数并将它们放在数组 intA中;单击 cmdSort按钮时,用选择法排序这 10个数并输出。 【程序代码】 Dim intA(1 To 10)As integer Private Sub cmdGene_Click( ) Dim intl As Integer Randomize For intl = 1 To 10 intA(intl) =(1) Next intl End Sub Private Sub cmdSort_Click( ) Dim intl, intJ,intMin, intTemp As Integer For intl = 1 To 9 intM
14、in = intA(intl) For intJ=(2) To 10 If intA(intJ) intMin Then Temp = intA(intJ) intA(intJ)=(3) intMin = intTemp End If Next intJ (4) (5) For intl = 1 To 10 Print Str(intA(intl)+“ “; Next intl Next lntl Print End Sub 6 阅读以下说明和 C+程序,将应填入 (n)处的字句写在对应栏内。 【说明】 设计一个类模板 SamPle用于对一个有序数组采用二分法查找元素下标。 【 C+程序】 #
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 答案 解析 DOC
