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

    【计算机类职业资格】全国计算机等级考试二级C语言真题2013年9月及答案解析.doc

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

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

    【计算机类职业资格】全国计算机等级考试二级C语言真题2013年9月及答案解析.doc

    1、全国计算机等级考试二级 C 语言真题 2013 年 9 月及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA2.下列叙述中正确的是_。(分数:1.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反

    2、映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。(分数:1.00)A.O(n)B.O(n2)C.O(log2n)D.0(nlog2n)4.下列叙述中正确的是_。(分数:1.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间5.数据流图中带有箭头的线段表示的是_。(分数:1.00)A.控制流B.事件驱动C

    3、.模块调用D.数据流6.在软件开发中,需求分析阶段可以使用的工具是_。(分数:1.00)A.N-S 图B.DFD 图C.PAD 图D.程序流程图7.在面向对象方法中,不属于“对象”基本特点的是_。(分数:1.00)A.一致性B.分类性C.多态性D.标识唯一性8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。(分数:1.00)A.一对一B.一对多C.多对一D.多对多9.在数据管理技术发展的三个阶段中,数据共享最好的是_。(分数:1.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同10.有三个关系 R、S 和 T 如下: (分数:1.00)A.笛卡儿积B.交C.并D

    4、.自然连接11.下列叙述中错误的是_。(分数:1.00)A.C 程序可以由多个程序文件组成B.一个 C 语言程序只能实现一种算法C.C 程序可以由一个或多个函数组成D.一个 C 函数可以单独作为一个 C 程序文件存在12.以下选项中,能用作数据常量的是_。(分数:1.00)A.115LB.0118C.1.5e1D.o11513.按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是_。(分数:1.00)A.大写字母B.下划线C.数字字符D.连接符14.设变量已正确定义并赋值,以下正确的表达式是_。(分数:1.00)A.x=y+z+5,+yB.int(15.8%5)C.x=y*5=x+z

    5、D.x=25%5.015.设有定义:int x=2;,以下表达式中,值不为 6 的是_。(分数:1.00)A.2*x,x+=2B.x+,2*xC.x*=(1+x)D.x*=x+116.有以下程序: #include stdio.h main() int x, y, z; x=y=1; z=x+, y+, +y; printf(“%d, %d, %d/n“, x, y, z); 程序运行后的输出结果是_。(分数:1.00)A.2, 3, 3B.2, 3, 2C.2, 3, 1D.2, 2, 117.有以下程序: #include stdio.h main() char c1, c2; c1=A+

    6、8-4; c2=A+8-5; printf(“%c, %d/n“, c1, c2); 已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是_。(分数:1.00)A.E, 68B.D, 69C.E, DD.输出无定值18.若有定义 int x, y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是_。(分数:1.00)A.(x-y0|x-y0)B.(x-Y0)C.(x-y0)D.(x-y=0)19.有以下程序: #include stdio.h main() int x=1, Y=0; if(!x)y+; else if(x=0

    7、) if(x)y+=2; else y+=3; printf(“%d/n“, y); 程序运行后的输出结果是_。(分数:1.00)A.3B.2C.1D.020.若有定义:float x=1.5; int a=1, b=3, c=2;则正确的 switch 语句是_。(分数:1.00)A.switch(a+b) case 1: printf(“*/n“);case 2+1: printf(“*/n“);B.switch(int)x); case 1: printf(“*n“);case 2: printf(“*/n“);C.switch(x) case 1.0: printf(“*/n“);ca

    8、se 2.0: printf(“*/n“);D.switch(a+b) case 1: printf(“*n“);case c: printf(“*/n“);21.有以下程序: #include stdio.h main() int y=9; for(;y0; y-) if(y%3=0) printf(“%d“, -y); 程序的运行结果是_。(分数:1.00)A.852B.963C.741D.87542122.有以下程序: #include stdio.h main() int i, j, m=1; for(i=1; i3; i+) for(j=3; j0; j-) if(i*j3)brea

    9、k; m*=i*j; printf(“m=%d/n“, m); 程序运行后的输出结果是_。(分数:1.00)A.m=4B.m=2C.m=6D.m=523.有以下程序: #include stdio.h int fun(int x, int y) if(x!=y) return (x+y)/2); else return(x); main() int a=4, b=5, c=6; printf(“%d/n“, fun(2*a, fun(b, c); 程序运行后的输出结果是_。(分数:1.00)A.6B.3C.8D.1224.有以下程序: #include stdio.h int add(int

    10、a, int b)return(a+b); main() int k, (*f)(), a=5, b=10; f=add; . 则以下函数调用语句错误的是_。(分数:1.00)A.k=f(a, b);B.k=add(a, b);C.k=(*f)(a, b);D.k=*f(a, b);25.有以下程序: #include stdio.h main() int n, *p=NULL; *p= printf(“Input n:“); scanf(“%d, printf(“output n:“); printf(“%d/n, p); 该程序试图通过指针 p 为变量 n 读入数据并输出,但程序有多处错误

    11、,以下语句正确的是_。(分数:1.00)A.int n, *p=NULL;B.*p=C.scanf(“%d“, 26.下列定义数组的语句中,正确的是_。(分数:1.00)A.#define N 10int xN;B.int N=10;int xN;C.int x0.10;D.int x;27.有以下程序: #include stdio.h main() int a=2, 3, 5, 4, i; for(i=0; i4; i+) switch(i%2) case 0: switch(ai%2) case 0: ai+; break; case 1: ai-; break; case 1: ai=

    12、0; for(i=0; i4; i+)printf(“%d“, ai); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.0 3 0 4B.2 0 5 0C.3 3 4 4D.3 0 4 028.有以下程序: #inelude stdio.h main() int b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, t=1; for(i=0; i3; i+) for(j=i; j=i; j+)t+=bibji; printf(“%d/n“, t); 程序运行后的输出结果是_。(分数:1.00)A.3B.4C.1D.929.以下语句中存在语法错误

    13、的是_。(分数:1.00)A.char ss620; ss1=“right?“;B.char ss()20=“right?“;C.char *ss6; ss1=“right?“;D.char *ss()=“right?“;30.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。(分数:1.00)A.do*t+=*s+;while(*s);B.for(i=0; ti=si; i+);C.while(*t=*s)t+; s+;D.for(i=0, j=0; ti+=sj+; );31.有以下程序: #include stdio.h void swap(char *x, char *y)

    14、 char t; t=*x; *x=*y; *y=t; main() char *s1=“abc“, *s2=“123“; swap(s1, s2); printf(“%s, %s/n“, s1, s2); 程序执行后的输出结果是_。(分数:1.00)A.321,cbaB.abc,123C.123,abcD.1bc,a2332.有以下函数: int fun(char *x, char *y) int n=0; while(*x=*y) y+; n+;return n; 函数的功能是( )。(分数:1.00)A.将 y 所指字符串赋给 x 所指存储空间B.查找 x 和 y 所指字符串中是否有/0

    15、C.统计 x 和 y 所指字符串中最前面连续相同的字符个数D.统计 x 和 y 所指字符串中相同的字符个数33.有以下程序: #include stdio.h int fun() static int x=1; *x=2; return x; main() int i, s=1; for(i=1; i=3; i+)s* =fun(); printf(“%d/n“, s); 程序运行后的输出结果是_。(分数:1.00)A.10B.30C.0D.6434.在一个 C 源程序文件中所定义的全局变量,其作用域为_。(分数:1.00)A.由具体定义位置和 extern 说明来决定范围B.所在程序的全部范

    16、围C.所在函数的全部范围D.所在文件的全部范围35.以下叙述中错误的是_。(分数:1.00)A.可以通过 typedef 增加新的类型B.可以用 typedef 将已存在的类型用一个新的名字来代表C.用 typedef 定义新的类型名后,原有类型名仍有效D.用 typedef 可以为各种类型起别名,但不能为变量起别名36.有以下程序: #include stdio.h struct S int a, b; data2=10, 100, 20, 200; main() struct S p=data1; printf(“%d/n“, +(p.a); 程序运行后的输出结果是_。(分数:1.00)A

    17、.10B.11C.20D.2137.有以下程序: #include stdio.h #define PT 3.5; #define S(X) PT*x*x; main() int a=1, b=2; printf(“%4.1f/n“, s(a+b); 程序运行后的输出结果是_。(分数:1.00)A.7.5B.31.5C.程序有错无输出结果D.14.038.有以下程序: #include stdio.h main() unsigned char a=2, b=4, c=5, d; d=a | b; d printf(“%d/n“, d); 程序运行后的输出结果是_。(分数:1.00)A.3B.4

    18、C.5D.639.有以下程序: #include stdio.h #include stdlib.h main() int *a, *b, *c; a=b=c(int *)malloc(sizeof(int); *a=1; *b=2, *c=3; a=b; printf(“%d, %d, %d/n“, *a, *b, *c); 程序运行后的输出结果是_。(分数:1.00)A.1,1,3B.2,2,3C.1,2,3D.3,3,340.以下叙述中正确的是_。(分数:1.00)A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B.打开一个已存在的文件并进行了写操作后,原有文件中的

    19、全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据D.C 语言中的文件是流式文件,因此只能顺序存取数据二、程序填空题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun 的功能是:计算如下公式前 n 项的和,并作为函数值返回。 (分数:18.00)填空项 1:_三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中函数 fun 的功能是:统计 substr 所指的字符串在 str 所指的字符串中出现的次数。 例如,若字符串为 aass 1kaaas,子字符串为 as,则应输出 2。 请改正程序中的错误,使它能得

    20、出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio.h int fun(char *str, char *substr) int i, j, k, num=0; /* found*/ for(i=0, stri, i+) for(j=i, k=0; substrk=strj; k+, j+) /* found*/ If(substrk+1=“/0“) num+; break; return num; main() char str80, substr80; printf(“Input a string:“); get

    21、s(str); printf(“Input a substfing: “); gets(substr); printf(“%d/n“, fun(str, substr); (分数:18.00)_四、程序设计题(总题数:1,分数:24.00)43.编写函数 fun,其功能是:根据以下公式求 的值(要求精度 0.0005,即某项小于 0.0005 时停止迭代)。(分数:24.00)_全国计算机等级考试二级 C 语言真题 2013 年 9 月答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、

    22、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.12345ABCDEB.EDCBA54321 C.ABCDE12345D.54321EDCBA解析:解析 栈是按照先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择 B。2.下列叙述中正确的是_。(分数:1.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的 解析:解析 循环队列有队头和队尾两个指针,但是循环队

    23、列仍是线性结构的,所以 A 错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以 B 与 C 错误。3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。(分数:1.00)A.O(n)B.O(n2)C.O(log2n) D.0(nlog2n)解析:解析 当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需要比较 log2n 次,而顺序查找需要比较 n 次。4.下列叙述中正确的是_。(分数:1.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B.顺序

    24、存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间解析:解析 链式存储结构既可以针对线性结构也可以针对非线性结构,所以 B 与 C 错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以 D 错误。5.数据流图中带有箭头的线段表示的是_。(分数:1.00)A.控制流B.事件驱动C.模块调用D.数据流 解析:解析 数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。6.在软件开发中,需求分析阶段可以使用的工具是_。(分数:1.00)A.

    25、N-S 图B.DFD 图 C.PAD 图D.程序流程图解析:解析 在需求分析阶段可以使用的工具有数据流图(DFD)、数据字典(DD)、判定树与判定表,所以选择 B。7.在面向对象方法中,不属于“对象”基本特点的是_。(分数:1.00)A.一致性 B.分类性C.多态性D.标识唯一性解析:解析 对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择 A。8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。(分数:1.00)A.一对一B.一对多 C.多对一D.多对多解析:解析 因为一间宿舍可以住多个学生,即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿

    26、舍和学生之间是一对多的关系。9.在数据管理技术发展的三个阶段中,数据共享最好的是_。(分数:1.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段 D.三个阶段相同解析:解析 数据管理发展至今已经历了 3 个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便,逻辑性强,物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择 C。10.有三个关系 R、S 和 T 如下: (分数:1.00)A.笛卡儿积B.交C.并D.自然连接 解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性

    27、列去掉,所以根据 T 关系中的有序组可知 R 与 S 进行的是自然连接操作。11.下列叙述中错误的是_。(分数:1.00)A.C 程序可以由多个程序文件组成B.一个 C 语言程序只能实现一种算法 C.C 程序可以由一个或多个函数组成D.一个 C 函数可以单独作为一个 C 程序文件存在解析:解析 在一个 C 语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以 B 错误。12.以下选项中,能用作数据常量的是_。(分数:1.00)A.115L B.0118C.1.5e1D.o115解析:解析 A 选项中 115L 表示 115 是长整型数据,合法。B 选项是八进制常量的表示方法,但是在八进

    28、制中不能含有数字 8,所以 B 错误。C 选项中 e 后面应该是整数不能是小数 1.5,所以 C 错误。D 选项中八进制常量应该是数字“0”开始,而不是字母“o”开始。13.按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是_。(分数:1.00)A.大写字母B.下划线C.数字字符D.连接符 解析:解析 C 语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以 D 选项中的连接符不合法。14.设变量已正确定义并赋值,以下正确的表达式是_。(分数:1.00)A.x=y+z+5,+y B.int(15.8%5)C.x=y*5=x+zD.x=25%5.0解析:解析 B 与

    29、D 选项中取模运算符%的左右两个操作数应均为整数,所以 B、D 错误。C 选项中不能将x+y 的值赋给表达式 y*5,所以 C 错误。15.设有定义:int x=2;,以下表达式中,值不为 6 的是_。(分数:1.00)A.2*x,x+=2 B.x+,2*xC.x*=(1+x)D.x*=x+1解析:解析 A 选项中逗号表达式先计算第一表达式 2*x,然后计算表达式 x+=2 的值,即 x=x+2 即 4,整个逗号表达式为第二个表达式的值 4,所以选择 A。B 选项中首先计算逗号表达式中第一表达式 x+,此时 x 为 3,在执行第二个表达式 2*x=2*3=6,所以逗号表达式为第二个表达式的值

    30、6。C 选项的赋值表达式可以表示为 x=x*(1+x)=2*(1+2)=6。D 选项中的表达式可以表示为 x=x*(x+1)=2*3=6。16.有以下程序: #include stdio.h main() int x, y, z; x=y=1; z=x+, y+, +y; printf(“%d, %d, %d/n“, x, y, z); 程序运行后的输出结果是_。(分数:1.00)A.2, 3, 3B.2, 3, 2C.2, 3, 1 D.2, 2, 1解析:解析 z=x+, y+, +y; ,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成(z=x+), (y+), (+y

    31、)。然后从左向右先计算表达式 z=x+,因为 x+先使用后自增,所以 z 的值为 1,x 的值为 2。再计算逗号表达式第二个表达式 y+,此时 y 的值为 2,最后计算第三个表达式+y,y的值为 3。17.有以下程序: #include stdio.h main() char c1, c2; c1=A+8-4; c2=A+8-5; printf(“%c, %d/n“, c1, c2); 已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是_。(分数:1.00)A.E, 68 B.D, 69C.E, DD.输出无定值解析:解析 本题目中字符变量 c1 是字符A的 ASCII 码加上

    32、4,即 69 所对应的字符E。字符变量 c2 是字符A的 ASCII 码加上 3,即 68 所对应的字符D。但是打印输出时,c1 以%c 的格式输出,所以是 E,c2 以%d 的格式输出,所以是 68。18.若有定义 int x, y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是_。(分数:1.00)A.(x-y0|x-y0) B.(x-Y0)C.(x-y0)D.(x-y=0)解析:解析 条件表达式:x=表达式 1?表达式 2:表达式 3 的含义是:先求解表达式 1,若为非 0(真),则求解表达式 2,将表达式 2 的值赋给 x;若表

    33、达式 1 的值为 0(假),则求解表达式 3,将表达式 3 的值赋给 x。在本题中与表达式 1:(x-y)等价的是(x-y0|x-y0)。19.有以下程序: #include stdio.h main() int x=1, Y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“%d/n“, y); 程序运行后的输出结果是_。(分数:1.00)A.3B.2C.1D.0 解析:解析 在 if else 语句中,else 总是与离它最近的 if 配对。本题目中 x 为 1,所以!x 为 0,因此执行 else if 语句中的内容,判断(x

    34、=0)是否成立。因为 x 为 1,所以条件不成立,于是 else if 内部的if.else 语句不再执行,所以 y 的值还是初始值 0。20.若有定义:float x=1.5; int a=1, b=3, c=2;则正确的 switch 语句是_。(分数:1.00)A.switch(a+b) case 1: printf(“*/n“);case 2+1: printf(“*/n“); B.switch(int)x); case 1: printf(“*n“);case 2: printf(“*/n“);C.switch(x) case 1.0: printf(“*/n“);case 2.0:

    35、 printf(“*/n“);D.switch(a+b) case 1: printf(“*n“);case c: printf(“*/n“);解析:解析 B 选项中 switch(int)x);语句中不应该有最后的分号。switch(expr1),中的 expr1 不能用浮点类型或 long 类型,也不能为一个字符串,所以 C 错误。case 后面常量表达式的类型必须与 switch后面表达式的类型一致,所以 D 错误。21.有以下程序: #include stdio.h main() int y=9; for(;y0; y-) if(y%3=0) printf(“%d“, -y); 程序的

    36、运行结果是_。(分数:1.00)A.852 B.963C.741D.875421解析:解析 第一次 for 循环,y 的值为 9,y%3 的值为 0,满足条件打印-y,即先减一后打印,所以打印 8;第二次 for 循环,y 的值为 7,y%3 的值为 1,不执行打印语句;第三次 for 循环,y 的值为 6,y%3的值为 0,满足条件打印-y,即先减一后打印,所以打印 5;第四次 for 循环,y 的值为 4,不满足 if 条件,不执行打印语句;第五次 for 循环,y 的值为 3,满足 if 条件,打印输出 2;第六次 for 循环,y 的值为 1,不满足条件,不执行打印语句。22.有以下程

    37、序: #include stdio.h main() int i, j, m=1; for(i=1; i3; i+) for(j=3; j0; j-) if(i*j3)break; m*=i*j; printf(“m=%d/n“, m); 程序运行后的输出结果是_。(分数:1.00)A.m=4B.m=2C.m=6 D.m=5解析:解析 第一次外循环 i 的值为 1,第一次内循环 j 的值为 3,不满足条件执行 m*=i*j,即 m 的值为 3;第二次 i 的值为 2,不满足条件执行 m*=i*j,即 m 的值为 6;第三次 j 的值为 1,不满足条件执行m*=i*j,即 m 的值仍为 6。第二

    38、次外循环 i 的值为 2,j 的值为 3,满足条件,执行 break 语句,跳出循环。23.有以下程序: #include stdio.h int fun(int x, int y) if(x!=y) return (x+y)/2); else return(x); main() int a=4, b=5, c=6; printf(“%d/n“, fun(2*a, fun(b, c); 程序运行后的输出结果是_。(分数:1.00)A.6 B.3C.8D.12解析:解析 本题中第一次调用为 fun(8, fun(5, 6),因为 fun(5, 6)返回值为 5,所以第二次调用为fun(8, 5)

    39、=6。所以选择答案 A。24.有以下程序: #include stdio.h int add(int a, int b)return(a+b); main() int k, (*f)(), a=5, b=10; f=add; . 则以下函数调用语句错误的是_。(分数:1.00)A.k=f(a, b);B.k=add(a, b);C.k=(*f)(a, b);D.k=*f(a, b); 解析:解析 D 选项中*f(a, b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整型变量 k。25.有以下程序: #include stdio.h main() in

    40、t n, *p=NULL; *p= printf(“Input n:“); scanf(“%d, printf(“output n:“); printf(“%d/n, p); 该程序试图通过指针 p 为变量 n 读入数据并输出,但程序有多处错误,以下语句正确的是_。(分数:1.00)A.int n, *p=NULL; B.*p=C.scanf(“%d“, 解析:解析 选项 B 的正确写法应为 p= ,选项 C 的正确写法应为 seanf(“%d“, p); ,选项 D 的正确写法应为 printf(“%d/n“, *p)。26.下列定义数组的语句中,正确的是_。(分数:1.00)A.#defi

    41、ne N 10int xN; B.int N=10;int xN;C.int x0.10;D.int x;解析:解析 数组说明的一般形式为:类型说明符 数组名常量表达式。B 选项中 N 是变量,不能用变量定义数组长度。C 选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D 选项中数组长度为空,所以非法。27.有以下程序: #include stdio.h main() int a=2, 3, 5, 4, i; for(i=0; i4; i+) switch(i%2) case 0: switch(ai%2) case 0: ai+; break; case 1: ai-; brea

    42、k; case 1: ai=0; for(i=0; i4; i+)printf(“%d“, ai); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.0 3 0 4B.2 0 5 0C.3 3 4 4D.3 0 4 0 解析:解析 第一次循环 i 为 0,i%2 为 0,执行 switch(a0%2)中的 case 0 语句后内容即 a0+, a0的值变成 3;第二次循环 i 的值为 1,i%2 为 1,执行 case 1: ai=0;所以 a1的值变成 0;第三次循环 i 的值为 2, i%2 为 0,执行 switch(a2%2)中的 case 1 语句后的内容

    43、 a2-, a2的值变成 4;第四次循环 i 的值为 3,i%2 为 1,执行 case 1: ai: 0; ,所以 a3的值变成 0。28.有以下程序: #inelude stdio.h main() int b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, t=1; for(i=0; i3; i+) for(j=i; j=i; j+)t+=bibji; printf(“%d/n“, t); 程序运行后的输出结果是_。(分数:1.00)A.3B.4 C.1D.9解析:解析 每次内循环只循环一次就结束,第一次外循环时 t=t+b0b00=1+b00=1+0=1;第二次外

    44、循环时 t=t+b1b11=1+b11=i+1=2;第三次外循环时 t=t+b2b22=2+b22=2+2=4。29.以下语句中存在语法错误的是_。(分数:1.00)A.char ss620; ss1=“right?“; B.char ss()20=“right?“;C.char *ss6; ss1=“right?“;D.char *ss()=“right?“;解析:解析 数组定义后,不可以对数组整体赋值,ss 是二维数组,因 ss1是一维字符数组,即字符串,字符串赋值可以使用 strcpy(ss1, “right“);这样的形式,而选项 A 中对二维数组中的第“1”维(相当于一个一维数组)赋

    45、值,是不可以的。选项 B 和 D 是定义时对数组初始化,这是可以的。选项 C 中,将字符串在内存中的首地址赋给指针数组的一个元素,这是可以的。30.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。(分数:1.00)A.do*t+=*s+;while(*s); B.for(i=0; ti=si; i+);C.while(*t=*s)t+; s+;D.for(i=0, j=0; ti+=sj+; );解析:解析 do*t+=*s+; while(*s);不能因为当*s=/0时,while(*s)跳出循环,这样字符串结束标志/0没有复制给*t,造成*t 不完整。注意,*t+=*s+是先执行 t=*s,然后才进行 t=t+1, s=s+1。B、C、D 都能将/0复制过去。31.有以下程序: #include stdio.h void swap(char *x, char *y) char t; t=*x; *x=*y; *y=t; main() char *s1=“abc“, *s2=“123“; swap(s1, s2); printf(“%s, %s/n“, s1, s


    注意事项

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




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

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

    收起
    展开