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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(【计算机类职业资格】二级C语言机试-126及答案解析.doc)为本站会员(figureissue185)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】二级C语言机试-126及答案解析.doc

1、二级 C语言机试-126 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是把数组 aa中的奇数元素按原来的先后顺序放在原数组后面。例如,输入“33,67,42,58,25,76,85,16,41,56”,输出结果“42,58,76,16,56,33,67,25,25,41。注意:部分源程序给出如下。请勿改动主函数 main和具他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include stdio.h#define N 10void fun(int aa)int

2、 i, j=0,k 0;int bb IN;for (i 0; iN; i+)if ( 【1】 )bbk+ aai;elseaa j+ =aa Ii;for(i=0; ik; 【2】 )aaj bbi;main ( )int i;int aaN=33, 67, 42,58,25, 76, 85, 16,41,56;clrscr ();printf(“/n* original list */n“);for (i=0; iN; i+)printf(“%4d“, aai);fun (aa);printf(“/n* new list */n“);for (i=0; iN; i+)printf(“%4d

3、“, aai);(分数:30.00)填空项 1:_二、改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:用递归算法计算斐波拉契级数列中第 n项的值。从第一项起,斐波拉契级数序列为 1, 1,2,3,5,8,13,21,例如,若给 n输入 7,该项的斐波拉契级数值为 13。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include stdio.hlong fun(int g)/*found*/switch(g);case 0:return 0;switch(g)case 1; case

4、 2:return 1;return (fun(g-1)+fun(g-2);main()long fib; int n;printf(“Input n:“);scanf(“%d“,printf(“n-%d/n“,n);fib=fun(n);printf(“fib=%d/D/n“,fib);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)3.学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 s中,请编写函数 fun(),它的功能是:按分数的高低排列学生的记录,高分在前。注意:部分源程序给出如下请勿改动主函数 main和其他函数中的任何内容,仅在函

5、数 fum的花括号中填入所编写的若啡:语句。试题程序:#include stdio.h#define N 16typedef structchar num10;int s ;STREC;int fun (STREC a)main ()STREC s IN = “GA005“, 85 , “GA003“, 76,“GA002“, 69, “GA004“, 85, “GA001“, 91,“GA007“, 72, “GA008“, 64, “GA006“, 87,“GA015“, 85, “GA013“, 91, “GA012“, 64,“GA014“, 91, “GA011“, 66, “GA0

6、17“, 64,“GA018“, 64, “GA016“, 72 ;int i;FILE *out;fun (s);printf(“The data after sorted :In“);for (i=0; iN; i+)if (i) %4=-0)/*每行输出 4个学生记录*/ printf (“/n“);printf(“%s %4d“,si.num, si.s);printf (“/n“);out=fopen ( “out 16. dat“, “w“ );for(i=0; iN; i+);if (i) %4=0fprintf(out, “%4d“,si.s);fprintf(out, “/n

7、“);fclose (out);(分数:40.00)_二级 C语言机试-126 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是把数组 aa中的奇数元素按原来的先后顺序放在原数组后面。例如,输入“33,67,42,58,25,76,85,16,41,56”,输出结果“42,58,76,16,56,33,67,25,25,41。注意:部分源程序给出如下。请勿改动主函数 main和具他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include stdio.h#defi

8、ne N 10void fun(int aa)int i, j=0,k 0;int bb IN;for (i 0; iN; i+)if ( 【1】 )bbk+ aai;elseaa j+ =aa Ii;for(i=0; ik; 【2】 )aaj bbi;main ( )int i;int aaN=33, 67, 42,58,25, 76, 85, 16,41,56;clrscr ();printf(“/n* original list */n“);for (i=0; iN; i+)printf(“%4d“, aai);fun (aa);printf(“/n* new list */n“);fo

9、r (i=0; iN; i+)printf(“%4d“, aai);(分数:30.00)填空项 1:_ (正确答案:1 aai%2!=0 或 aai%2=12 i+,j+)解析:解析 填空 1:如果一个数对 2求余,结果不为 0,也就是等于 1,则这个数为奇数,就把这个数先暂时存在数组 bb中。否则这个数为偶数,就存在数组 aa中。填空 2:最后,将数组 bb中的奇数都拷贝到数组 aa中偶数的后面。每执行一次循环休,数组 aa的下标 j和数组 bb的下标 i都要加 1。二、改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:用递归算法计算斐波拉契级数列中第 n项

10、的值。从第一项起,斐波拉契级数序列为 1, 1,2,3,5,8,13,21,例如,若给 n输入 7,该项的斐波拉契级数值为 13。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include stdio.hlong fun(int g)/*found*/switch(g);case 0:return 0;switch(g)case 1; case 2:return 1;return (fun(g-1)+fun(g-2);main()long fib; int n;printf(“Input n:“);scanf(“%d

11、“,printf(“n-%d/n“,n);fib=fun(n);printf(“fib=%d/D/n“,fib);(分数:30.00)填空项 1:_ (正确答案:错误:switch(g); 正确:去掉分号(2)错误:case 1;case 2:return 1: 正确:case 1:case 2:return 1;)解析:解析 C 语言中,Switch 语句之后不能有分号,并且 Case语句常量后应用的是冒号。三、编程题(总题数:1,分数:40.00)3.学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 s中,请编写函数 fun(),它的功能是:按分数的高低排列学生的记录

12、,高分在前。注意:部分源程序给出如下请勿改动主函数 main和其他函数中的任何内容,仅在函数 fum的花括号中填入所编写的若啡:语句。试题程序:#include stdio.h#define N 16typedef structchar num10;int s ;STREC;int fun (STREC a)main ()STREC s IN = “GA005“, 85 , “GA003“, 76,“GA002“, 69, “GA004“, 85, “GA001“, 91,“GA007“, 72, “GA008“, 64, “GA006“, 87,“GA015“, 85, “GA013“, 9

13、1, “GA012“, 64,“GA014“, 91, “GA011“, 66, “GA017“, 64,“GA018“, 64, “GA016“, 72 ;int i;FILE *out;fun (s);printf(“The data after sorted :In“);for (i=0; iN; i+)if (i) %4=-0)/*每行输出 4个学生记录*/ printf (“/n“);printf(“%s %4d“,si.num, si.s);printf (“/n“);out=fopen ( “out 16. dat“, “w“ );for(i=0; iN; i+);if (i)

14、%4=0fprintf(out, “%4d“,si.s);fprintf(out, “/n“);fclose (out);(分数:40.00)_正确答案:(int fun (STREC a)int i,j;STREC t;for (i=1; iN; i+) /*用冒泡法进行排序,进行 N-1次比较*/for (j =0; jN-1; j+) / *在每一次比较中要进行 N-1次两两比较*/if(aj.saj+1.s)t=a j; a j =a j+1; a j+1 =t; /*按分数的高低排列学生的记录,高分在前*/)解析:解析 冒泡法算法思路:如果有 N个数,则要进行 N-1次比较,在每一次

15、比较中要进行 N-1次两两比较(这种算法较好理解但不是最精的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较并将其中大的数放在前或在后(若要求从小到大排序,则大的数要放在后。反之则对调),即两两比较后这两个数要形成题中所要求的顺序。由于总是从头到尾进行比较,所以第 1次比较结束后,最大(或最小)数肯定在最后,第 2次比较结束后,次最大(或次最小)数肯定在倒数的第 2个数,依次类推,所以进行第一次比较时必须比较到最后一个数,而进行第 2次比较时只要比较到倒数的第 2个数即可,所以进行第 i次比较时只需比较 N-i次即可(这种算法较难理解,但它是最好的)。选择法算法思路:如果有 N个数则从头到

16、倒数的第 2个数一个一个往后走动,每走动 1个数总是将这个数与其后的所有数进行比较并找出它们的最大(或最小)数,找出最大(或最小)数后再将所得的最大(或最小)数与该数进行交换,交换后再走到下一个数依次交换到结束。此外,选择法还可用如下思路:如果有 N个数,则从头到倒数的第 2个数个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按顺序将进行比较的这两个数排序(即交换)。插入法算法思路:先对头两个数进行排序。然后把第 3个数插入到前两个数中,插入后前 3个数依然有序;再把第 4个数插入到前 3个数中,插入后前 4个数依然有序;依次插完所有的数。具体执行方式(假设从小到大

17、排序):从第 2个数开始往后一个一个走动直到最后。每走到 1个数总是将该数(先将其存到 1个临时变量中)与其前面的数进行比较(比较的顺序总是从后往前进行),在比较时只要发现该数比被比较的数小,就将被比较的数往后移 1位,然后该数还要冉与前 1个数进行比较,亢到发现该数比被比较的数大或己比较到头(即第 1个数的前面),并将该数存入当前被比较数的后 1位(存储空间)。如果有整型一维数组 a其有 N个元素,要求将其按从小到大排序。注意元素下标是从 0始的。冒泡法:for (i=1; iN; i+)for (j=0;N-1; j+)if (ajaj+1)t=aj ;a j=aj+1 ;aj+1=aj; 选择法for (i=0 iN-1; i+)p=i;for(j i+1; jN; j+)if (apaj) p=j;ifp!=i)t=ai;ai=ap;ap=t;插入法for i=1; iN; i+t=ai;for j=i-1; a jt j-)aj+1=aj;aj+1=t;

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