欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1325885       资源大小:35KB        全文页数:3页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C 语言机试 84 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数: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 10 void fu

    2、n(int aa) int i, j=0,k 0; int bb IN; for (i 0; iN; i+) if (U 【1】 /U) bbk+ aai; else aa j+ =aa Ii; for(i=0; ik;U【2】 /U) 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 lis

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

    4、und*/ 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“, printf(“n-%d/n“,n); fib=fun(n); printf(“fib=%d/D/n“,fib); (分数:30.00)填空项 1:_三、B编程题/B(总题数:1,分数:40.00)3.学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 s 中,请编写函数 fu

    5、n(),它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序给出如下 请勿改动主函数main 和其他函数中的任何内容,仅在函数 fum 的花括号中填入所编写的若啡:语句。 试题程序: #include stdio.h #define N 16 typedef struct char 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“, 6

    6、4, “GA006“, 87, “GA015“, 85, “GA013“, 91, “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=f

    7、open ( “out 16. dat“, “w“ ); for(i=0; iN; i+); if (i) %4=0 fprintf(out, “%4d“,si.s); fprintf(out, “/n“); fclose (out); (分数:40.00)_二级 C 语言机试 84 答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是把数组 aa 中的奇数元素按原来的先后顺序放在原数组后面。 例如,输入“33,67,42,58,25,76,85,16,41,56”,输出结果“42,58,76,16,56

    8、,33,67,25,25,41。 注意:部分源程序给出如下。 请勿改动主函数 main 和具他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include stdio.h #define N 10 void fun(int aa) int i, j=0,k 0; int bb IN; for (i 0; iN; i+) if (U 【1】 /U) bbk+ aai; else aa j+ =aa Ii; for(i=0; ik;U【2】 /U) aaj bbi; main ( ) int i; int aaN=33, 67, 42,58,25, 7

    9、6, 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“, aai); (分数:30.00)填空项 1:_ (正确答案:1 aai%2!=0 或 aai%2=1)解析:2 i+,j+ 解析 填空 1:如果一个数对 2 求余,结果不为 0,也就是等于 1,则这个数为奇数,就把这个数先暂时存在数组 bb 中。否则这个数为偶

    10、数,就存在数组 aa 中。填空 2:最后,将数组 bb 中的奇数都拷贝到数组 aa 中偶数的后面。每执行一次循环休,数组 aa 的下标 j 和数组 bb 的下标 i 都要加1。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:用递归算法计算斐波拉契级数列中第 n 项的值。从第一项起,斐波拉契级数序列为 1, 1,2,3,5,8,13,21,例如,若给 n 输入 7, 该项的斐波拉契级数值为 13。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdi

    11、o.h long 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“, printf(“n-%d/n“,n); fib=fun(n); printf(“fib=%d/D/n“,fib); (分数:30.00)填空项 1:_ (正确答案:错误:switch(g); 正确:去掉分号)解析:(2)错误:case 1;case

    12、2:return 1: 正确:case 1:case 2:return 1; 解析 C 语言中,Switch 语句之后不能有分号,并且 Case 语句常量后应用的是冒号。三、B编程题/B(总题数:1,分数:40.00)3.学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 s 中,请编写函数 fun(),它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序给出如下 请勿改动主函数main 和其他函数中的任何内容,仅在函数 fum 的花括号中填入所编写的若啡:语句。 试题程序: #include stdio.h #define N 16 typedef str

    13、uct char 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, “GA017“, 64, “GA018“, 64, “GA016“, 72 ; int i; FILE *out; fu

    14、n (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=0 fprintf(out, “%4d“,si.s); fprintf(out, “/n“); fclose (out); (分数:40.00)_正确答案:()解析:i

    15、nt 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 次比较,在每一次比较中要进行 N-1 次两两比较(这种算法较好理解但不是最精的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较并将其中大的数放在前或在后(若要

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

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

    18、中)与其前面的数进行比较(比较的顺序总是从后往前进行),在比较时只要发现该数比被比较的数小,就将被比较的数往后移 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;


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开