1、二级 C语言笔试-373 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.算法是指A) 计算机程序 B) 解决问题的计算方法C) 排序算法 D) 解决问题的有限运算序列(分数:2.00)A.B.C.D.2.下列叙述中正确的是A) 循环链表是非线性结构B) 双向链表是非线性结构C) 只有一个根结点的数据结构不一定是线性结构D) 有一个以上根结点的数据结构不一定是非线性结构(分数:2.00)A.B.C.D.3.下列对于线性链表的描述中正确的是A) 存储空间不一定连续,且各元素的存储顺序是任意的B) 存储空间不一定连续,且前件元素一定存储在后件元
2、素的前面C) 存储空间必须连续,且前件元素一定存储在后件元素的前面D) 存储空间必须连续,且各元素的存储顺序是任意的(分数:2.00)A.B.C.D.4.面向对象方法中,不属于对象基本特点的是A) 标识唯一性 B) 分类性 C) 封装性 D) 一致性(分数:2.00)A.B.C.D.5.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是A) 概要设计 B) 详细设计 C) 可行性分析 D) 需求分析(分数:2.00)A.B.C.D.6.数据流图中方框表示的是A) 数据流 B) 存储文件 C) 控制流 D) 源,潭(分数:2.00)A.B.C.D.7.下列对于软件测试的描
3、述中正确的是A) 软件测试的主要目的是发现程序中的错误 B) 软件测试的目的是证明程序是否正确C) 软件测试的目的是使程序运行结果正确 D) 软件测试是为了证明软件中没有错误(分数:2.00)A.B.C.D.8.数据库、数据库系统和数据库管理系统之间的关系是A) 数据库包括数据库系统和数据库管理系统 B) 数据库系统包括数据库和数据库管理系统C) 数据库管理系统包括数据库和数据库系统 D) 三者没有明显的包含关系(分数:2.00)A.B.C.D.9.设有图书(图书编号,书名,第一作者,出版社)、读者(借书证号,姓名,单位,职称)和借阅(借书证号,图书编号,借书日期,还书日期)三张表,则表借阅的
4、关键字(键或码)为A) 借书证号,图书编号 B) 图书编号,借书日期C) 借书日期,还书日期 D) 借书证号,借书日期(分数:2.00)A.B.C.D.10.有三个关系 R、S 和 T如下:(分数:2.00)A.B.C.D.11.下列叙述中正确的是A) 每个 C语言程序文件中都必须要有一个 main()函数B) 在 C语言程序中 main()函数的位置是固定的C) C语言程序中所有函数之间都可以相互调用,与函数所在位置无关D) 在 C语言程序的函数中不能定义另一个函数(分数:1.00)A.B.C.D.12.以下合法的十六进制数是A) 0x B) 0x4de C) 0x1h D) 0x77(分数
5、:1.00)A.B.C.D.13.已知大写字母 A的 ASCII码的值是 65,小写字母 a的 ASCII码的值是 97,以下不能将变量 c中的大写字母转换为对应小写字母的语句是A) c=(c-A)%26+a B) c=c+32C) c=c-A+a D) c=(A+c)%26-a(分数:1.00)A.B.C.D.14.若变量已正确定义并赋值,以下符合 C语言语法的表达式是A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b(分数:1.00)A.B.C.D.15.设变量 a是 int型,f 是 float型,i 是 double型,则表达式 10+a+i
6、*f值的数据类型为A) int B) float C) double D) 不确定(分数:1.00)A.B.C.D.16.有以下程序:#include stdio.hmain()chal c1=1,c2=2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 当运行时输入:a回车后,以下叙述正确的是A) 变量 c1被赋予字符 a,c2 被赋予回车符 B) 程序将等待用户输入第 2个字符C) 变量 c1被赋予字符 a,c2 中仍是原有字符 2 D) 变量 c1被赋予字符 a,c2 中将无确定值(分数:1.00)A.B.C.D.17.下列程
7、序的输出结果是#include “stdio.h“main()int i, a=0, b=0; for(i=1; i10; i+)if(i % 2=0)a+; continue; b+; printf(“a=%d, b=%d“, a, b); A) a=4, b=4 B) a=4, b=5 C) a=5, b=4 D) a=5, b=5(分数:1.00)A.B.C.D.18.设变量 a、b、c、d 和 y都已正确定义并赋值。若有以下 if语句:if(ab)if(c=d)y=0; else y=1; 该语句所表示的含义是(分数:1.00)A.B.C.D.19.若 a是数值类型,则逻辑表达式(a=
8、1)|(a!=1)的值是A) 0 B) 1 C) 2 D) 不知道 a的值,不能确定(分数:1.00)A.B.C.D.20.有以下程序:#includestdio.hmain()int s; scaIlf(“%d“, s); while(s0)switch(s)case 1:printf(“%d“, s+5); case 2:printf(“%d“, s+4).break; case 3:printf(“%d“, s+3); default:printf(“%d“, s+1)Ibreak; scanf(“%d“,s); 运行时,若输入 123450回车,则输出结果是A) 6566456 B)
9、66656 C) 66666 D) 6666656(分数:1.00)A.B.C.D.21.有如下程序:int a10=11, 12, 13, 14, 15, 16, 17, 18, 19, 20; int*p=a3, b; b=p5; 则 b的值是A) 15 B) 16 C) 18 D) 19(分数:2.00)A.B.C.D.22.以下程序的输出结果是Fun(int x, int y)return(x+y); main()int a=1, b=2, c=3, sum; sum=Fun(a+, b+, a+b), c+); printf(“%d“, sum); A) 9 B) 8 C) 7 D)
10、 6(分数:2.00)A.B.C.D.23.有以下程序:#includestdio.hmain()int i=5; doif(i%3=1)if(i%5=2)printf(“%d“, i); break; i+; while(i!=0); printf(“/n“); 程序的运行结果是A) *7 B) *3*5 C) *5 D) *2*6(分数:2.00)A.B.C.D.24.以下函数按每行 8个输出数组中的数据:void fun(int*w, int n)int i; for(i=0; in; i+)_printf(“%d“, wi); printf(“/n“); 下划线处应填入的语句是A) i
11、f(i/8=0)printf(“/n“); B) if(i/8=0)continue; C) if(i%8=O)printf(“/n“); D) if(i%8=0)continue;(分数:2.00)A.B.C.D.25.以下数组定义中错误的是A) int x3=0; B) int x23=1, 2, 3, 4, 5, 6; C) int x3=1, 2, 3, 4, 5, 6; D) int x23=1, 2, 3, 4, 5, 6;(分数:2.00)A.B.C.D.26.有以下程序:#includestring.hmain()char p=a, b, c, q10=a, b, c; pri
12、ntf(“%d%d/n“, strlen(p), strlen(q); 以下叙述中正确的是A) 在给 p和 q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B) 由于 p数组中没有字符串结束符,长度不能确定;但 q数组中字符长度为 3C) 由于 q数组中没有字符串结束符,长度不能确定;但 p数组中字符长度为 3D) 由于 p和 q数组中没有字符串结束符,故长度都不能确定(分数:2.00)A.B.C.D.27.若有以下程序:#includestdio.hint a=1, 3, 5, 7; main()int i; int *p=a; for(i=0; i4; i+)ai=*p;
13、printf(“%d/n“, a2); 上面程序的输出结果是A) 5 B) 7 C) l D) 3(分数:2.00)A.B.C.D.28.若有定义语句:int m=5, 4, 3, 2, 1, i=4;, 则下面对 m数组元素的引用中错误的是A) m-i B) m2*2 C) mm0 D) mmi(分数:2.00)A.B.C.D.29.设有以下说明语句:typedef structint n; char ch8; PER; 则下面叙述中正确的是A) PER是结构体变量名 B) PER 是结构体类型名C) typedef struct是结构体类型 D) struct 是结构体类型名(分数:2.0
14、0)A.B.C.D.30.有以下程序:int fun(int n)if(n=1)return 1; elsereturn(n+fun(n-1); main()int x; scanf(“%d“, x); x=fun(x); printf(“%d/n“, x)执行程序时,给变量 x输入 10,程序的输出结果是A) 54 B) 55 C) 65 D) 45(分数:2.00)A.B.C.D.31.以下程序的输出结果是#includestdio.hsub(int*s, int y)static int t=3; y=st; t-; main()int a=1, 2, 3, 4, i, x=0; for
15、(i=0;i4;i+)sub(a, x); printf(“%d“, x); printf(“/n“); A) 1234 B) 4321 C) OOOO D) 4444(分数:2.00)A.B.C.D.32.有以下程序:#includestdio.h#define F(x, y) (x)*(y)main()int a=3, b=4; printf(“%d/n“, F(a+, b+); 程序运行后的输出结果是A) 12 B) 15 C) 16 D) 20(分数:2.00)A.B.C.D.33.以下程序运行时,若从键盘输入 10 20 30回车,输出的结果是main()int i=0, j=0,
16、k=0; scanf(“ %d% * d%d“, i, j, k); printf(“ % d% d% d/n“, i, j, k); A) 10200 B) 102030 C) 10300 D) 10030(分数:2.00)A.B.C.D.34.有以下程序:#includestdio.hmain()char *a=“abcd“, “ef“, “gh“, “ijk“; int i; for(i=0; i4; i+)printf(“%c“,*ai); 程序运行后的输出结果是A) aegi B) dfhk C) abcd D) abcdefghijk(分数:2.00)A.B.C.D.35.以下程序
17、执行后的输出结果是fun(int x, int y)static int m=0, i=2; i+=m+1; m=i+x+y; return m; main()intj=1, m=1, k; k=fun(j, m); printf(“%d, “, k); k=fun(j, m); printf(“%d/n“, k); A) 5, 5 B) 5, 11 C) 11, 11 D) 11, 5(分数:2.00)A.B.C.D.36.阅读下面程序,则执行后的结果是#include “stdio, h“main()char str=“tomeetme“, *p; for(p=str; pstr+7; p
18、+=2)putchar(*p); printf(“/n“); A) tomeetme B) tmem C) oete D) tome(分数:2.00)A.B.C.D.37.有以下程序:main()char ch=“uvwxyz“, *pc; pc=ch; printf(“% c/n“,*(pc+5); 程序运行后的输出结果是A) z B) 0 C) 元素 ch5的地址 D) 字符 y的地址(分数:2.00)A.B.C.D.38.设有定义:struct complexint real, unreal; data1=1, 8, data2; 则以下赋值语句中错误的是A) data2=data1;
19、B) data2=(2, 6); C) data2. real=data1. real; D) data2. real=data1. unreal;(分数:2.00)A.B.C.D.39.有以下程序:#includestdio.hmain()FILE*fp; int k, n, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2. dat“, “w“); fprintf(fp, “%d% d% d/n“, a0, a1, a2); fprintf(fp, “% d% d% d/n“, a3, a4, a5); fclose(fp); fp=fopen(“d2. dat“, “r
20、“); fscanf(fp, “% d%d“, k, n); printf(“%d% d/n“, k, n); close(fp); 程序运行后的输出结果是A) 12 B) 14 C) 1234 D) 123456(分数:2.00)A.B.C.D.40.变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反,低 4位不变,所要执行的运算是A) ab B) a|b C) ab D) a4(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:30.00)41.一个队列的初始状态为空。现将元素 1、2、3
21、、4、5、A、B、C、D、E 依次入队,然后再依次退队,则元素退队的顺序为 1。(分数:2.00)填空项 1:_42.对长度为 20的线性表进行冒泡排序,最坏情况下需要比较的次数为 1。(分数:2.00)填空项 1:_43.按照软件测试的一般步骤, 1 测试应在集成测试之前进行。(分数:2.00)填空项 1:_44.在二维表中,元组的 1 不可再分成更小的数据项。(分数:2.00)填空项 1:_45.数据库应用系统中的核心问题是 1。(分数:2.00)填空项 1:_46.有以下程序(说明:字符 0的 ASCII码值为 48):#includestdio.hmain()char c1, c2;
22、scanf(“%d“, c1); c2=c1+9; printf(“%c%c/n“, c1, c2); 若程序运行时从键盘输入 48回车,则输出结果为_。(分数:2.00)填空项 1:_47.设变量已正确定义为整型,则表达式 n=i=2,+i, i+的值为 1。(分数:2.00)填空项 1:_48.以下程序运行后的输出结果是_。#includestdio.hmain()int x=10, y=20, t=0; if(x=y)t=x; x=y; y=t; printf(“%d%d/n“, x, y); (分数:2.00)填空项 1:_49.以下程序的功能是:借助指针变量找出数组元素中最大值所在的
23、位置并输出该最大值。请在输出语句中填写代表最大值的输出项。#includestdio.hmain()int a10, *p,*s; for(p=a; p-a10; p+) scanf(“%d“, p); for(p=a, s=a; p-a10; p+)if(*p*s)s=p; printf(“max=%d/n“,_); (分数:2.00)填空项 1:_50.以下程序运行后的输出结果是_。main()int a=3, b=2, c=1; if(c=a)printf(“%d/n“, c); elseprintf(“%d/n“, b); (分数:2.00)填空项 1:_51.有以下程序:int fl
24、(int x, int y)return xy?x:y; int f2(int x, int y)return xy?y:x; main()int a=4, b=3, c=5, d=2, e, f, g; e=f2(f1(a, b), n(c, d); f=n(f2(a, b), f2(c, d); g=a+b+c+d-e-f; printf(“%d, %d, %d/n“, e, f, g); 程序运行后的输出结果是_。(分数:2.00)填空项 1:_52.以下程序运行后的输出结果是_。#includestring.hmain()char ch=“abc“, x34; int i; for(i
25、=0; i3; i+)strcpy(xi, ch); for(i=0; i3; i+)printf(“%s“,xii); printf(“/n“); (分数:2.00)填空项 1:_53.以下程序的功能是:通过函数 func输入字符并统计输入字符的个数,输入时用字符作为输入结束标志。请填空。#includestdio.hlong_; /*函数说明语句*/main()long a; a=func(); printf(“n=%1d/n“, a); long func()long b; for(b=0; getchar()!=; b+; ); return b; (分数:2.00)填空项 1:_54
26、.下列程序的输出结果是_。main()int i; for(i=1; i+1; i+)if(i4)printf(“%d/d“, i); break; printf(“%d/n“, i+); (分数:2.00)填空项 1:_55.fseek函数的正确调用形式是 1。(分数:2.00)填空项 1:_二级 C语言笔试-373 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.算法是指A) 计算机程序 B) 解决问题的计算方法C) 排序算法 D) 解决问题的有限运算序列(分数:2.00)A.B.C.D. 解析:解析 算法是指对解决方案准确而完整的描述。
27、2.下列叙述中正确的是A) 循环链表是非线性结构B) 双向链表是非线性结构C) 只有一个根结点的数据结构不一定是线性结构D) 有一个以上根结点的数据结构不一定是非线性结构(分数:2.00)A.B.C. D.解析:解析 线性结构指的是数据元素之间存在着“一对一”线性关系的数据结构,这样的结构中只有一个根结点,如循环链表和双向链表;非线性结构指的是数据元素之间存在着“一对多”非线性关系的数据结构,这样的结构中可能有一个根结点,如树形结构,也可能有多个根结点,如网状结构。3.下列对于线性链表的描述中正确的是A) 存储空间不一定连续,且各元素的存储顺序是任意的B) 存储空间不一定连续,且前件元素一定存
28、储在后件元素的前面C) 存储空间必须连续,且前件元素一定存储在后件元素的前面D) 存储空间必须连续,且各元素的存储顺序是任意的(分数:2.00)A. B.C.D.解析:解析 线性链表是链式存储结构。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致。4.面向对象方法中,不属于对象基本特点的是A) 标识唯一性 B) 分类性 C) 封装性 D) 一致性(分数:2.00)A.B.C.D. 解析:解析 对象的基本特点有:标识唯一性、分类性、多态性、封装性和模块独立性。5.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是A
29、) 概要设计 B) 详细设计 C) 可行性分析 D) 需求分析(分数:2.00)A.B.C.D. 解析:解析 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期的主要活动阶段如下。可行性研究与计划制定:确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制订完成开发任务的实施计划。需求分析:对待开发软件提出的需求进行分析并给出详细定义。编写软件规格说明书及初步的用户手册,提交评审。软件设计:系统设计人员和程序设计人员应该在反复理解软件需求的基础上给出软件的结构、模块的划分、功能的分配以及处理流程。软件实现:把软件设计
30、转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。软件测试:在设计测试用例的基础上,检验软件的各个组成部分,编写测试分析报告。运行和维护:将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。6.数据流图中方框表示的是A) 数据流 B) 存储文件 C) 控制流 D) 源,潭(分数:2.00)A.B.C.D. 解析:解析 数据流图是描述数据处理过程的工具,它从数据传递和加工的角度,来刻画数据流从输入到输出的变化过程。数据流图中的主要图形元素有:圆形表示加工,箭头表示数据流,双杠表示存储文件,方框
31、表示源、潭。7.下列对于软件测试的描述中正确的是A) 软件测试的主要目的是发现程序中的错误 B) 软件测试的目的是证明程序是否正确C) 软件测试的目的是使程序运行结果正确 D) 软件测试是为了证明软件中没有错误(分数:2.00)A. B.C.D.解析:解析 软件测试的目标是发现软件中的错误。8.数据库、数据库系统和数据库管理系统之间的关系是A) 数据库包括数据库系统和数据库管理系统 B) 数据库系统包括数据库和数据库管理系统C) 数据库管理系统包括数据库和数据库系统 D) 三者没有明显的包含关系(分数:2.00)A.B. C.D.解析:解析 数据库系统有数据库、数据库管理系统、数据库管理员、硬
32、件平台、软件平台 5部分构成。9.设有图书(图书编号,书名,第一作者,出版社)、读者(借书证号,姓名,单位,职称)和借阅(借书证号,图书编号,借书日期,还书日期)三张表,则表借阅的关键字(键或码)为A) 借书证号,图书编号 B) 图书编号,借书日期C) 借书日期,还书日期 D) 借书证号,借书日期(分数:2.00)A. B.C.D.解析:解析 在二维表中凡能唯一标识元组的最小属性集称为关键字,关键字具有标识元组、建立元组间联系等重要作用。此题中,借书证号,图书编号是表借阅的主键,借书证号、图书编号分别是外键,借书证号是读者表的主关键字,图书编号是图书表的主关键字。10.有三个关系 R、S 和
33、T如下:(分数:2.00)A.B.C.D. 解析:解析 在关系运算中,交的定义如下:设 R1和 R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则为交运算,结果仍为度等于 n的关系,其中,交运算的结果既属于 R1,又属于 R2。11.下列叙述中正确的是A) 每个 C语言程序文件中都必须要有一个 main()函数B) 在 C语言程序中 main()函数的位置是固定的C) C语言程序中所有函数之间都可以相互调用,与函数所在位置无关D) 在 C语言程序的函数中不能定义另一个函数(分数:1.00)A. B.C.D.解析:解析 main 函数是 C语言程序的主函数,可以出现在
34、程序中的任何位置。函数是 C语言程序的基本模块,函数内部可以再定义其他函数。但函数间可相互调用,被调用的既可以是 C语言提供的库函数,也可以是用户自定义的函数。12.以下合法的十六进制数是A) 0x B) 0x4de C) 0x1h D) 0x77(分数:1.00)A.B. C.D.解析:解析 考查十六进制数的表示方法。十六进制数以 0x开头,后面跟着若干位 09 和 af 的数,所以正确答案为 B)。13.已知大写字母 A的 ASCII码的值是 65,小写字母 a的 ASCII码的值是 97,以下不能将变量 c中的大写字母转换为对应小写字母的语句是A) c=(c-A)%26+a B) c=c
35、+32C) c=c-A+a D) c=(A+c)%26-a(分数:1.00)A.B.C.D. 解析:解析 无论大小写,字母间的间隔都相等,所以C-A=c-a,因此c=C-A+a,选项A)、C)正确。从题述可知,a-A=97-65=32,所以c=C+32,选项 B)正确。14.若变量已正确定义并赋值,以下符合 C语言语法的表达式是A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b(分数:1.00)A.B. C.D.解析:解析 选项 A)中包含一个不合法的运算符“:=”;选项 C)应改为(int) 18. 5%3;选项 D)可理解为两个表达式:a+7=c
36、+b 和 a=a+7,其中第一个是错的,因为 C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项 B),它实际上相当于 a=(b=c+2),进而可分解为两个表达式:b=c+2 和 a=b。15.设变量 a是 int型,f 是 float型,i 是 double型,则表达式 10+a+i*f值的数据类型为A) int B) float C) double D) 不确定(分数:1.00)A.B.C. D.解析:解析 根据混合运算规则,如果有一个数据是 float型或 double型,则其他数据类型先转化为double型,运算的结果最终也是 double型。16.有以下
37、程序:#include stdio.hmain()chal c1=1,c2=2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 当运行时输入:a回车后,以下叙述正确的是A) 变量 c1被赋予字符 a,c2 被赋予回车符 B) 程序将等待用户输入第 2个字符C) 变量 c1被赋予字符 a,c2 中仍是原有字符 2 D) 变量 c1被赋予字符 a,c2 中将无确定值(分数:1.00)A. B.C.D.解析:解析 本题考查的是输入输出函数。函数 getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受一个字符(
38、回车符也算是一个字符)。故本题中变量 c1被赋予字符 a,c2 被赋予回车符。17.下列程序的输出结果是#include “stdio.h“main()int i, a=0, b=0; for(i=1; i10; i+)if(i % 2=0)a+; continue; b+; printf(“a=%d, b=%d“, a, b); A) a=4, b=4 B) a=4, b=5 C) a=5, b=4 D) a=5, b=5(分数:1.00)A.B. C.D.解析:解析 continue 语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被 2整除时,a 就会增
39、加 1,之后执行 continue语句,直接执行到 for循环体的结尾,进行i+,判断循环条件。18.设变量 a、b、c、d 和 y都已正确定义并赋值。若有以下 if语句:if(ab)if(c=d)y=0; else y=1; 该语句所表示的含义是(分数:1.00)A.B.C. D.解析:解析 本题考查 if语句的使用。整个语句都是以 ab 为假设的,在 ab 的情况下,如果 c=d,则 y=0;否则 y=1。所以答案为选项 C)。19.若 a是数值类型,则逻辑表达式(a=1)|(a!=1)的值是A) 0 B) 1 C) 2 D) 不知道 a的值,不能确定(分数:1.00)A.B. C.D.解
40、析:解析 当 a=1时,(a=1)|(a!=1)为真;当 a!=1时,(a=1)|(a!=1)也为真,故正确答案为 B)。20.有以下程序:#includestdio.hmain()int s; scaIlf(“%d“, s); while(s0)switch(s)case 1:printf(“%d“, s+5); case 2:printf(“%d“, s+4).break; case 3:printf(“%d“, s+3); default:printf(“%d“, s+1)Ibreak; scanf(“%d“,s); 运行时,若输入 123450回车,则输出结果是A) 6566456 B
41、) 66656 C) 66666 D) 6666656(分数:1.00)A. B.C.D.解析:解析 switch 语句执行完一个 case后面的语句后,流程控制转移到下一个 case语句继续执行,遇到 break会跳出本次循环。本题中输入 1时会输出 65,输入 2时会输出 6,输入 3时会输出 64,输入4时会输出 5,输入 5时会输出 6,在输入 0时不满足循环条件,程序执行结束。21.有如下程序:int a10=11, 12, 13, 14, 15, 16, 17, 18, 19, 20; int*p=a3, b; b=p5; 则 b的值是A) 15 B) 16 C) 18 D) 19
42、(分数:2.00)A.B.C.D. 解析:解析 p=a3将指针指向数组 a的第 4个元素,p5指向数组 a的第 9个元素,而 a8=19,所以 b=19。22.以下程序的输出结果是Fun(int x, int y)return(x+y); main()int a=1, b=2, c=3, sum; sum=Fun(a+, b+, a+b), c+); printf(“%d“, sum); A) 9 B) 8 C) 7 D) 6(分数:2.00)A.B. C.D.解析:解析 逗号表达式 a+,b+,a+b 先计算 a+,a=2; 再计算 b+,b=3; 表达式的值就是 a+b的值,为 5。表达式
43、 c+的值是 c递增前的值,为 3。所以 fun(a+,b+,a+b),c+)等价于 fun(5,3),返回值为 5+3=8。23.有以下程序:#includestdio.hmain()int i=5; doif(i%3=1)if(i%5=2)printf(“%d“, i); break; i+; while(i!=0); printf(“/n“); 程序的运行结果是A) *7 B) *3*5 C) *5 D) *2*6(分数:2.00)A. B.C.D.解析:解析 整个程序中只有对 i增加的语句而没有对 i减少的语句,所以 2、3 都不可能出现,选项 B)和D)错误。而 1=5时第一个 if
44、语句的表达式为假,所以选项 C)也错误。24.以下函数按每行 8个输出数组中的数据:void fun(int*w, int n)int i; for(i=0; in; i+)_printf(“%d“, wi); printf(“/n“); 下划线处应填入的语句是A) if(i/8=0)printf(“/n“); B) if(i/8=0)continue; C) if(i%8=O)printf(“/n“); D) if(i%8=0)continue;(分数:2.00)A.B.C. D.解析:解析 在 C语言循环语句中,continue 用来跳出当次循环,因此 B)项和 D)项不正确。if(i/8
45、=0)是指当 i除以 8的得数等于 0,即 i的值小于 8时,打印换行,因此 A)项也不正确。if(i%8=0)是指当 i除以 8的余数等于 0,即当间隔 8个数时,打印换行,因此选项 C)正确。25.以下数组定义中错误的是A) int x3=0; B) int x23=1, 2, 3, 4, 5, 6; C) int x3=1, 2, 3, 4, 5, 6; D) int x23=1, 2, 3, 4, 5, 6;(分数:2.00)A.B. C.D.解析:解析 二维数组的初始化有以下几种形式:分行进行初始化;不分行进行初始化;部分数组元素进行初始化;省略第一维的定义,不省略第二维的定义。选项
46、 B)等号右边分了 3行,大于等号左边数组的行数 2。26.有以下程序:#includestring.hmain()char p=a, b, c, q10=a, b, c; printf(“%d%d/n“, strlen(p), strlen(q); 以下叙述中正确的是A) 在给 p和 q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B) 由于 p数组中没有字符串结束符,长度不能确定;但 q数组中字符长度为 3C) 由于 q数组中没有字符串结束符,长度不能确定;但 p数组中字符长度为 3D) 由于 p和 q数组中没有字符串结束符,故长度都不能确定(分数:2.00)A.B. C.
47、D.解析:解析 本题考查的是库函数的调用。strlen()是计算以“/0“结束的字符串的长度函数,函数的值为字符串的实际长度,不包括“/0“。题中“q10=a,b,c“虽然给出了数组大小,即数组实际分配的存储空间,但此字符串只占用前 3个存储单元,其余存储单元系统自动加上“/0“,故数组 q的长度为3;由于 p数组中没有字符串结束符,故字符串的长度不能确定。27.若有以下程序:#includestdio.hint a=1, 3, 5, 7; main()int i; int *p=a; for(i=0; i4; i+)ai=*p; printf(“%d/n“, a2); 上面程序的输出结果是A) 5 B) 7 C) l D) 3(分数:2.00)A.B.C. D.解析:解析 在 C语言中,数组元素下标是从 0开始的;指针变量 p指向数组的首地址。for 循环语句中,指针变量 p始终指向