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

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

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

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

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

    1、二级 C语言机试-204 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)在给定程序中,函数 fun的功能是:有 NN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为 0。例如,若 N=3,有下列矩阵:1 2 34 5 67 8 9则计算结果为:1 0 06 5 010 14 9请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构。文件 BLANK1.C内容如下:#include stdio.h#defi

    2、ne N 4/*found*/void fun(int(*t) (1) )int i,j;for(i=1;iN;i+)for(j=0;ji;j+)/*found*/(2) =tij+tji;/*found*/(3) =0;void main( )int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10,i,j;printf(“/nThe original array: /n“);for(i=0;iN;i+)for(j=0;jN;j+)printf(“%2d“,tij);printf(“/n“); fun(t);printf(“/nThe re

    3、sult is: /n“);for(i=0;iN;i+)for(j=0;jN;j+) printf(“%2d“,tij);printf(“/n“);(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.给定程序 MODI1.C中函数 fun的功能是:将 s所指字符串中的字母转换为按字母顺序的后续字母(但 Z转换为 A,z 转换为 a),其他字符不变。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。文件 MODI1.C内容如下:#includestdio.h#includectyp

    4、e.hvoid fun(char *s)/*found*/while(*s!=)if(*s=A gets(s);printf(“/n The string: /n/n“); puts(s);fun(s);printf(“/n/n Tile Cords: /n/n“);puts(s);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)2.请编写函数 fun,该函数的功能是:将 M行 N列的二维数组中的数据,按列的顺序依次存放到一维数组中。函数 fun中给出的语句仅供参考。例如,二维数组中的数据为:33 33 33 3344 44 44 4455 55 55 55则一维数

    5、组中的内容应是:33 44 55 33 44 55 33 44 55 33 44 55注意:部分源程序在文件 PROG1.C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。文件 PROG1.C内容如下:#includestdio.hvoid fun(int(*s)10,int *b,int *n,int mm,int nn)/*以下代码仅供参考*/int i,j,np=0; /*np 用作 b数组的下标*/void main( )int w1010=33,33,33,33,44,44,44,44,55,55,55,55,i,j;int a10

    6、0=0,n=0;printf(“The matrix: /n“);for(i=0;i3;i+)for(j=0;j4;j+)printf(“%3d“,wij);printf(“/n“);fun(w,a, fun(t);printf(“/nThe result is: /n“);for(i=0;iN;i+)for(j=0;jN;j+) printf(“%2d“,tij);printf(“/n“);(分数:30.00)填空项 1:_ (正确答案:N)解析:填空项 1:_ (正确答案:tij)解析:填空项 1:_ (正确答案:tji)解析:解析 main 函数中定义了一个二维数组 t存放了一个 44矩

    7、阵。在 main函数中调用 fun函数,实现对二维数组的相关操作。因为二维数组的每一行都是一个一维数组,且元素个数为 4,所以对应的形参 t必须是一个指向 4个元素一维数组的指针,因此第 1空处应填入N。题目中的二维数组很特殊,其中存放的是一个方阵,方阵的特点是:有一个主对角线,主对角下方称为下三角,上方称为上三角。如果用 tij表示下三角元素,则它的行下标 i和列下标 j的大小关系是:ji,与之对称的上三角元素可以表示成 tji。因此,在 fun函数中通过一个两重循环的嵌套,按行的方向遍历数组元素,由于 j循环的循环条件是 ji,所以 tij表示下三角元素,tji则表示对称的上三角元素。两数

    8、相加的结果放在下三角中,所以第 2空处应填入 tij,上三角元素置为 0,所以第 3空处应填入 tji。二、改错题(总题数:1,分数:30.00)1.给定程序 MODI1.C中函数 fun的功能是:将 s所指字符串中的字母转换为按字母顺序的后续字母(但 Z转换为 A,z 转换为 a),其他字符不变。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。文件 MODI1.C内容如下:#includestdio.h#includectype.hvoid fun(char *s)/*found*/while(*s!=)if(*s=A gets(

    9、s);printf(“/n The string: /n/n“); puts(s);fun(s);printf(“/n/n Tile Cords: /n/n“);puts(s);(分数:30.00)填空项 1:_ (正确答案:第 1处:将“while(*s!=)”改为“while(*s!=/0)”。第 2处:将“(*s)+;”改为“s+;”。)解析:解析 函数 fun中利用指针 s依次从字符串的第一个字符开始取出字符进行处理,当 s指向字符串结束标记时停止循环。所以第 1处是字符串处理错误,字符串的结束标记是/0,而不是。循环中取出当前 s指向的字符进行处理后,指针 s应该往后移动,指向下一个

    10、字符,所以第 2处错误是指针使用错误,应该改为“s+;”,而不是 s指向的字符的 ASCII码自加 1。三、编程题(总题数:1,分数:40.00)2.请编写函数 fun,该函数的功能是:将 M行 N列的二维数组中的数据,按列的顺序依次存放到一维数组中。函数 fun中给出的语句仅供参考。例如,二维数组中的数据为:33 33 33 3344 44 44 4455 55 55 55则一维数组中的内容应是:33 44 55 33 44 55 33 44 55 33 44 55注意:部分源程序在文件 PROG1.C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的

    11、若干语句。文件 PROG1.C内容如下:#includestdio.hvoid fun(int(*s)10,int *b,int *n,int mm,int nn)/*以下代码仅供参考*/int i,j,np=0; /*np 用作 b数组的下标*/void main( )int w1010=33,33,33,33,44,44,44,44,55,55,55,55,i,j;int a100=0,n=0;printf(“The matrix: /n“);for(i=0;i3;i+)for(j=0;j4;j+)printf(“%3d“,wij);printf(“/n“);fun(w,a,&n,3,4)

    12、;printf(“The A array: /n“);for(i=0;in;i+)printf(“%3d“,ai);printf(“/n/n“);(分数:40.00)_正确答案:(void fun(int (*s)10,int *b,int *n,int mm,int nn) /*以下代码仅供参考*/int i,j,np=0; /*np 用作 b数组的下标*/for(j=0;jnn;j+)for(i=0;imm;i+)bnp=sij;np+;*n=np;)解析:解析 函数 fun中,形参 s是一个指向由 10个元素组成的一维数组的指针,形参 b指向一个一维数组,形参 n带回一维数组 b的实际长

    13、度,形参 mm传递二维数组的行数,nn 传递二维数组的列数。假设用 i表示二维数组的行下标,j 表示二维数组的列下标,要按列方向访问二维数组元素,需要两重循环,其中 j循环放在外层,i 循环放在内层。在循环中取出 sij对 bnp进行赋值。循环结束后,将 b数组的实际长度 np赋值给*n,通过 n将一维数组的长度带回到 main函数中。本题中最容易出错的地方就是两重循环的控制,首先循环的次序应该将 j放外层,i 放里层。其次,就是循环的条件,由于题目中举例是一个 3行 4列的二维数组,所以考生容易将条件写为“j4”、“i3”,这样的话,程序就只能处理3行 4列的二维数组,其他的二维数组调用该函

    14、数就会出现错误结果,而且根本没有用到形参 mm和 nn。这是编程处理该题目时必须注意的问题。在上机考试的程序设计题目中,有些程序会给出一部分程序段供考生参考,考生可以直接使用,不必重新编写,例如本题中给出了一些变量的定义。在一些比较复杂的编程题中,这些参考程序会给我们提供一定的帮助,建议考生认真阅读。但是,如果考生有自己的编程算法、有自己的编程思路,这些程序段如果和自己的编程思路不太相符,也可以将其删掉,自己重新编写。归纳总结 本套试题的程序填空和程序设计题考查的是二维数组的处理。二维数组处理的关键是掌握好行列下标的变化规律,控制好循环。假设有如下定义:int aMN;用变量 i表示行下标,变

    15、量 j表示列下标。如果要求按行的方向遍历二维数组,则循环应该写为:for(i=0;iM;i+)for(j=0;jN;j+) /*循环中对 aij进行处理*/如果要求按列的方向遍历二维数组,则循环应该写为:for(j=0;jN;j+)for(i=0;iM;i+) /*循环中对 aij进行处理*/如果只对某行元素进行处理,只需对列下标进行循环控制,行号不变;如果只对某列元素进行处理,只需对行下标进行循环控制,列号不变。假如二维数组表示的是一个 n阶方阵,则有如下规律:(1)主对角线元素:行列下标相等,元素可以表示为 aii。(2)反向对角线元素可以表示为:ain-i-1。(3)下三角元素如果表示成 aij,则与之对称的上三角元素可以表示成 aji。(4)如果只对下三角元素进行处理,则常用的循环是:for(i=0;in;i+)for(j=0;ji;j+)/*循环中对 aij进行处理*/


    注意事项

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




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

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

    收起
    展开