1、二级 C 语言-27 及答案解析(总分:76.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:48.00)1.若有定义和语句: ( )int * * pp, * p,a10,b20ppprintf(“%d,%d”n“,* p,* * pp);则输出结果是 A.10, 10 B.10,20 C.20,10 D.20,20 (分数:1.00)A.B.C.D.2.下列关键字中,不属于 C 语言变量存储类别的是_。 A. register B. auto C. extern D. public(分数:1.00)A.B.C.D.3.算法的空间复杂度是指 A. 算法程序的长度 B. 算法
2、程序中的指令条数 C. 算法程序所占的存储空间 D. 执行算法需要的内存空间(分数:2.00)A.B.C.D.4.有以下程序main() int i,s=1;for(i=1;50;i+)if(!(i%5)i=M1+M2;printf (“%d/n“, i );程序编译后运行的输出结果是 A. 10 B. 20 C. 25 D. 30(分数:1.00)A.B.C.D.6.在长度为 n 的有序线性表中进行二分法查找,最坏情况下需要比较的次数是_。 A.O(n) B.O(n2) C.O(log2n) D.O(nlog2n)(分数:2.00)A.B.C.D.7.若有以下函数首部int fun(doub
3、le xlO,int *n)则下面针对此函数的函数声明语句中正确的是_。 A. int fun(double x, int *n); B. int fun(double, int); C. int fun(double *x, int n); D. iht fun(double*,int*);(分数:1.00)A.B.C.D.8.有以下程序:#includemain() int a=12,c;C=(a2)1;printf(“%d/n“,c) ;程序运行后的输出结果是U /U。 A. 3 B. 50 C. 2 D. 96(分数:2.00)A.B.C.D.9.有以下程序段:int k=0,a=1,
4、b=2,c=3;k=ab?b:a;k=kc?c:k;执行该程序段后,k 的值是_。 A. 3 B. 2 C. 1 D. 0(分数:2.00)A.B.C.D.10.下面程序运行后的输出结果是_。struct abcint a,b,c;main()struct abc s2=1,2,3,4,5,6;int t=s0.a+s1.b;printf(“%d/n“,t); A. 5 B. 6 C. 7 D. 8(分数:2.00)A.B.C.D.11.有如下程序main() int x=3;do prinff(“d“,x-);while(!x);该程序的执行结果是_。 A. 321 B. 3 C. 不输出任
5、何内容 D. 陷入死循环(分数:1.00)A.B.C.D.12.sizeof(float)是U /U。 A. 一种函数调用 B. 一种函数定义 C. 一个浮点表达式 D. 一个整型表达式(分数:2.00)A.B.C.D.13.对于 n 个结点的单向链表(无表头结点),需要指针单元的个数至少为_。 A. n-1 B. n C. n+1 D. 2nA.B.C.D.14.下面程序的运行结果是#includestdio.hmain() char a=“morning“,t;int i,j=0;for(i=1;i7;i+) if(ajai)j=i;t=aj; aj=a7;a7=aj; putsa; A.
6、 mrgninr B. mo C. moring D. morning(分数:1.00)A.B.C.D.15.下列选项可以正确表示字符型常量的是( )。 A. /r B. “a“ C. “/897“ D. 296(分数:1.00)A.B.C.D.16.有两个关系 R 和 T 如下:(分数:2.00)A.B.C.D.17.以下叙述中错误的是 _。 A. 对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出 B. 数组名代表的是数组所占存储区的首地址,其值不可改变 C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D. 可以通过赋初值的
7、方式确定数组元素的个数(分数:2.00)A.B.C.D.18.下列程序的输出结果是_。int i=010,J=10;printf(“%d,%d/n“,+i,j-); A.11,10 B.9,10 C.010,9 D.10,9(分数:2.00)A.B.C.D.19.设 Y 为整型变量,A=1,A 的地址为 EF01;B=2,B 的地址为 EF02;执行语句 B=char ch8; PER;则下面叙述中正确的是 A. PER 是结构体变量名 B. PER 是结构体类型名 C. typedef struct 是结构体类型 D. struct 是结构体类型名(分数:1.00)A.B.C.D.21.已知
8、 i、j、k 为 int 型变量,若要从键盘输入 2、3、4CR,使 i、j、k 的值分别为 2、3、4 下列正确的输入语句是U /U。 A. scanf(“%3d,%3d,%3d”, A. 99 B. 520 C. 1320 D. 2020(分数:2.00)A.B.C.D.24.在设计程序时,应采纳的原则之一是 _。 A. 程序结构应有助于读者理解 B. 不限制 goto 语句的使用 C. 减少或取消注解行 D. 程序越短越好 (分数:1.00)A.B.C.D.25.有以下程序:main() int aa44:1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,S=
9、0;for(i=0;i4;i+) s+=aai1;printf(“%d/n“,s);程序运行后的输出结果是( )。 A. 11 B. 19 C. 13 D. 20(分数:1.00)A.B.C.D.26.下列选项中不属于软件生命周期开发阶段任务的是U /U。 A.软件测试 B.概要设计 C.软件维护 D.详细设计(分数:1.00)A.B.C.D.27.有三个关系 R、S 和 T 如下:(分数:2.00)A.B.C.D.28.请读程序:#includestdio.hmain() int a;float b,c;scanf(“%2d%3f%4f“,若运行时从键盘上输入 9876543210 (分数:
10、1.00)A.B.C.D.29.以下合法的赋值语句是 _。 A. X=Y=100 B. D-; C. X+Y; D. C=int(A+B) (分数:1.00)A.B.C.D.30.下述程序向文件输出的结果是_。#includestdio.hvoid main() FILE*fp=fopen(“TEST“,“wb“);fprintf(fp,“%d%5.0f%c%d“,58,76273.0,2278);fclose(fp); A. 58 76273-2278 B. 5876273.000000-2278 C. 5876273-2278 D. 因文件为二进制文件而不可读(分数:2.00)A.B.C.
11、D.31.有以下程序int f(int n)if(n=1)return 1;else return f(n-1)+1;main() int i,j=0;for(i=1;i3;i+)j+=f(i);printf(“%d/n“,j);程序运行后的输出结果是 A. 4 B. 3 C. 2 D. 1(分数:2.00)A.B.C.D.32.用树形结构来表示实体之间联系的模型称为_。 A. 关系模型 B. 层次模型 C. 网状模型 D. 数据模型(分数:1.00)A.B.C.D.33.设有以下定义和语句int a32=1,2,3,4,5,6,*p3;p0=a1;则*(p0+1)所代表的数组元素是 A. a
12、01 B. a10 C. a11 D. a12(分数:1.00)A.B.C.D.34.有以下程序:main() int k=4,n=0;for(;nk;) n+;if(n%!=0)continue;k-; printf(“%d/n“,k,n);程序运行后的输出结果是( )。 A. 1,1 B. 2,2 C. 3,3 D. 4,4(分数:1.00)A.B.C.D.35.有以下程序:main() int i;for(i=0;i3;i+)switch(i)case 0: prinft(“%d“,i);Case 2: prinft(“%d“,i);default: prinft(“%d“,i);程序运
13、行后的输出结果是( )。 A. 022111 B. 021021 C. 000122 D. 012(分数:1.00)A.B.C.D.二、B填空题/B(总题数:15,分数:28.00)36.下列语句使指针 p 指向一个 double 类型的动态存储单元。 p=U U /U /Umalloc(sizeof(double);(分数:4.00)填空项 1:_37.下面程序执行后输出的结果是U U /U /U。 int m=13; int fun(int x,int y) int m=3; return(x*y-m); main() int a=7,b=5; printf(“%d/n“,fun(a,B)
14、 /m); (分数:1.00)填空项 1:_38.以下程序是求矩阵 a,b 的和,结果存入矩阵 c 中,并按矩阵形式输出,请填空。 #includestdio.h main() int a34=13,-2,7,5,1,0,4,-3,6,8,0,2; int b34=-2,0,1,4,5,-1,7,6,6,8,0,2; int i,j,c34; for(i=0;i3;i+) for(j=0;j4;j+) cij=U U /U /U; for(i=0;i3;i+) for(j=0;j4;j+) printf(“%3d“,cij); printf(“/n“);(分数:1.00)填空项 1:_39.下
15、面的函数 fun 的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为 0 的元素中,其他依次类推,请填空。 fun(int x,int b) int k=0,r; do r=x%U U /U /U; bk+=r; x/=U U /U /U; while(x);(分数:1.00)填空项 1:_40.下列程序的功能是计算机平均成绩并统计 90 分以上的人数。 main ( ) int n,m; float grade, average; average=n=m=U U /U /U; while(U U /U /U) scanf(“%f“, if
16、 (grade0) break; m+; average+=grade; if (grade90)U U /U /U; m+; ) if(n) printf(“%.2f %d/n“,average/n,m); (分数:4.00)填空项 1:_41.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。 main() int i, a20, sum, count; sum=count=0; for(i=0; i20; i+)scanf(“% d“, U U /U /U);for(i=0; i20; i+) if(ai0) count+; sum+=ai; printf(“s
17、um=% d, count=% d/n“, sum, count); (分数:2.00)填空项 1:_42.以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值,请填空。 void fun(int, int, int(*)4, int*); main() int a34=12, 41, 36, 28, 19, 33, 15, 27, 3, 27, 19, 1, b3, i; fun(3, 4, a, b); for(1=0; i3; i+)printf(“% 4d“, bi); printf(“/n“); void fun(int m, int n, int ar4,
18、int * bar) int i, j, x; for(i=0; im; i+) x=ari0; for(j=0; jn; j+)if(xarij)x=arij; U U /U /U=x; (分数:2.00)填空项 1:_43.十进制数 111 用八位二进制数表示为U U /U /U。(分数:2.00)填空项 1:_44.以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。 int fun(int n) int m=0,f=1,i; for(i=1;i=n;i+) m+=i*f; f=U U /U /U; return m; main() printf(“
19、m=%d/n“,U U /U /U);(分数:1.00)填空项 1:_45.在面向对象方法中,信息隐蔽是通过对象的U U /U /U性来实现的。(分数:1.00)填空项 1:_46.数据库系统的三级模式分别为U U /U /U模式、内部级模式与外部级模式。(分数:2.00)填空项 1:_47.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是 1。(分数:2.00)填空项 1:_48.下列程序的循环次数是_。 x=2; do x=x*x; while(!x);(分数:2.00)填空项 1:_49.以下程序通过函数指针 p 调用函数 fun,请在填空栏内写出定义变量 p 的语句。
20、 void fun(int * x,int * y) main() int a=10,b=20; UU /U/U: p=fun; p(printf(“%d,%d”n“,* p,* * pp);则输出结果是 A.10, 10 B.10,20 C.20,10 D.20,20 (分数:1.00)A.B.C.D. 解析:2.下列关键字中,不属于 C 语言变量存储类别的是_。 A. register B. auto C. extern D. public(分数:1.00)A.B.C.D. 解析:解析 变量的存储类别具体包含四种:自动的(auto),静态的(static),寄存器的(register),外
21、部的(extern)。3.算法的空间复杂度是指 A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 执行算法需要的内存空间(分数:2.00)A.B.C.D. 解析:解析 算法的复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指执行这个算法所需要的内存空间。4.有以下程序main() int i,s=1;for(i=1;50;i+)if(!(i%5)i=M1+M2;printf (“%d/n“, i );程序编译后运行的输出结果是 A. 10 B. 20 C. 25 D. 30(分数:1.00)A
22、.B.C. D.解析:解析 本题考查的知识点是“文件包含”。编译预处理时,用“typel.h”中的内容替代命令ginclude”typel.h“。表达式“i=M1+M2”经过宏替换为“i=5*3+5*2”即 i=25,所以最后输出的 i 的值为 25。所以 4 个选项中 C 正确。6.在长度为 n 的有序线性表中进行二分法查找,最坏情况下需要比较的次数是_。 A.O(n) B.O(n2) C.O(log2n) D.O(nlog2n)(分数:2.00)A.B.C. D.解析:解析 当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需要比
23、较 log2n 次,而顺序查找需要比较 n 次,因此本题答案为 C。7.若有以下函数首部int fun(double xlO,int *n)则下面针对此函数的函数声明语句中正确的是_。 A. int fun(double x, int *n); B. int fun(double, int); C. int fun(double *x, int n); D. iht fun(double*,int*);(分数:1.00)A.B.C.D. 解析:评析:函数声明可以照写已定义的函数的首部,再加一个号就成为了对函数的声明,在函数声明中也可以不写形参名,而只写形参的类型,但要保证与函数首部写法上的致,
24、即函数类型、函数名、参数个数、参数类型和参数顺序相同。字符数组可用指针来表示,所以选顶 D 正确。8.有以下程序:#includemain() int a=12,c;C=(a2)1;printf(“%d/n“,c) ;程序运行后的输出结果是U /U。 A. 3 B. 50 C. 2 D. 96(分数:2.00)A.B.C.D. 解析:解析 考查左移运算符“”,将 12 转换为二进制为 1100,左移 2 位,再左移 1 位,为1100000,即 96。故选择答案 D) 。9.有以下程序段:int k=0,a=1,b=2,c=3;k=ab?b:a;k=kc?c:k;执行该程序段后,k 的值是_。
25、 A. 3 B. 2 C. 1 D. 0(分数:2.00)A.B. C.D.解析:解析 本题考查条件表达式的概念。第一个条件表达式“ab?b:a=12? 2:1=2”,并将 2 赋给k,第二个条件表达式“kc?c:k=23?3:2=2”,并将 2 再赋给 k,此时 k 的值为 2。10.下面程序运行后的输出结果是_。struct abcint a,b,c;main()struct abc s2=1,2,3,4,5,6;int t=s0.a+s1.b;printf(“%d/n“,t); A. 5 B. 6 C. 7 D. 8(分数:2.00)A.B. C.D.解析:解析 在 main 函数中定义
26、了一个 struct abc 类型的数组,同时分别利用12,3及4,5,6对数组中两个元素进行初始化。在该结构体,依次对其中的 a,b,c 三个变量进行初始化。故 s0.a=1,s1.b=5,所以本题输出为 6。11.有如下程序main() int x=3;do prinff(“d“,x-);while(!x);该程序的执行结果是_。 A. 321 B. 3 C. 不输出任何内容 D. 陷入死循环(分数:1.00)A.B. C.D.解析:解析 本题 x 赋初值为 3,当执行 printf(“%d“,x-);时,由于 x-的作用是先运算 x,再将 x 的值减 1,所以,printf 输出的 x
27、值为 3,等输出后,x 的值减 1 变为 2,继续执行,判断条件!x 为假,循环只被执行一次。12.sizeof(float)是U /U。 A. 一种函数调用 B. 一种函数定义 C. 一个浮点表达式 D. 一个整型表达式(分数:2.00)A.B.C.D. 解析:解析 sizeof(float)是 C 语言内部规定的用于计算单精度型变量(float)在计算机的内存中所占用的字节数量的函数,返回一个整数值。13.对于 n 个结点的单向链表(无表头结点),需要指针单元的个数至少为_。 A. n-1 B. n C. n+1 D. 2nA.B.C. D.解析:解析 在 n 个结点的单向链表(无表头结点
28、)中,每个结点都有个指针单元(即指针域),加上头指针,至少需要 n+1 个指针单元。14.下面程序的运行结果是#includestdio.hmain() char a=“morning“,t;int i,j=0;for(i=1;i7;i+) if(ajai)j=i;t=aj; aj=a7;a7=aj; putsa; A. mrgninr B. mo C. moring D. morning(分数:1.00)A.B. C.D.解析:解析 本题考查了一维数组元素的引用方法。题中数组 a 为一字符串数组,通过数组首地址和下标可以引用数组中的每个元素。因为字符数组相当于字符串,所以可以用字符串输出函数
29、 puts()来输出字符数组中的各个字符。15.下列选项可以正确表示字符型常量的是( )。 A. /r B. “a“ C. “/897“ D. 296(分数:1.00)A. B.C.D.解析:解析 C 语言中,一个字符常量代表 ASCII 字符集中的一个字符,在程序中用单引号括起来作为字符常量,字符常量的范围是 0127。由于字符常量用单引号括起来,所以选项 B)、C)错误,选项 D)超过了字符常量的表示范围。16.有两个关系 R 和 T 如下:(分数:2.00)A. B.C.D.解析:解析 选择运算是从关系中找出满足给定条件的那些元组,其中条件是以逻辑表达式给出的。选取值为真的元组,这种运算
30、是从水平方向抽取元组。17.以下叙述中错误的是 _。 A. 对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出 B. 数组名代表的是数组所占存储区的首地址,其值不可改变 C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D. 可以通过赋初值的方式确定数组元素的个数(分数:2.00)A. B.C.D.解析:解析 double 型的数组也是可以直接用数组名对数组进行整体输入或输出的。18.下列程序的输出结果是_。int i=010,J=10;printf(“%d,%d/n“,+i,j-); A.11,10 B.9,10 C.010,9
31、 D.10,9(分数:2.00)A.B. C.D.解析:19.设 Y 为整型变量,A=1,A 的地址为 EF01;B=2,B 的地址为 EF02;执行语句 B=char ch8; PER;则下面叙述中正确的是 A. PER 是结构体变量名 B. PER 是结构体类型名 C. typedef struct 是结构体类型 D. struct 是结构体类型名(分数:1.00)A.B. C.D.解析:解析 本题中,typedef 声明新的类型名 PER 来代替已有的类型名,PER 代表上面指定的一个结构体类型,此时,也可以用 PER 来定义变量。21.已知 i、j、k 为 int 型变量,若要从键盘输
32、入 2、3、4CR,使 i、j、k 的值分别为 2、3、4 下列正确的输入语句是U /U。 A. scanf(“%3d,%3d,%3d”, A. 99 B. 520 C. 1320 D. 2020(分数:2.00)A.B. C.D.解析:解析 C 语言中字符串是以/O字符结束的,且 strlen()函数计算的是/O字符前的所有字符的个数。本题中 strlen(st)应为 5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的 sizeof(st)为 20。24.在设计程序时,应采纳的原则之一是 _。 A
33、. 程序结构应有助于读者理解 B. 不限制 goto 语句的使用 C. 减少或取消注解行 D. 程序越短越好 (分数:1.00)A. B.C.D.解析:解析 滥用 goto 语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。25.有以下程序:main() int aa44:1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,S=0;for(i=0;i4;i+) s+=aai1;printf(“%d/n“,s);程序运行后的输出结果是( )。 A. 11 B. 19 C. 13 D. 20(分
34、数:1.00)A.B. C.D.解析:解析 c 语言规定,数组元素的下标是从零开始的。本题首先定义了一个二维数组 aa 并按行赋初值,定义了一个变量 s 用于求和。for 循环执行了 4 次分别把数组元素 aa01、aa11、aa211和 aa31的值(2,6,9,2)加到变量 s 中,s 的值为 19,最后输出的 s 的值为 19。所以 4 个选项中 B正确。26.下列选项中不属于软件生命周期开发阶段任务的是U /U。 A.软件测试 B.概要设计 C.软件维护 D.详细设计(分数:1.00)A.B.C. D.解析:解析 软件定义、软件开发、软件运行维护组成了软件的生命周期。其中软件定义阶段的
35、主要工作是可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;运行维护阶段的主要工作是软件的运行及后期的维护等。27.有三个关系 R、S 和 T 如下:(分数:2.00)A.B.C.D. 解析:解析 在关系运算中,交的定义如下:设 R1 和 R2 为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则为交运算,结果仍为度等于 n 的关系,其中,交运算的结果既属于 R1,又属于 R2。28.请读程序:#includestdio.hmain() int a;float b,c;scanf(“%2d%3f%4f“,若运行时从键盘上输入 98765
36、43210 (分数:1.00)A.B.C. D.解析:解析 scanf()把用户从键盘录入的数字的第 1、2 位存入整型变量 a;把第 3、4、5 位存入单精度实型变量 b,把第 6、7、 8、9 位存入单精度实型变量 c,用户录入的第 10 位被 scanf()遗弃。这时变量 a、b、c 的值分别为:98、765.000000、 4321.000000。29.以下合法的赋值语句是 _。 A. X=Y=100 B. D-; C. X+Y; D. C=int(A+B) (分数:1.00)A.B. C.D.解析:解析 本题中的答案 A 与 D 都缺少“;”,而答案 C 中,表达式是不能独立成为语句
37、的,答案 B使用了 C 语言的自减运算符它就相当于 D=D-1,所以答案 B 为一赋值语句。30.下述程序向文件输出的结果是_。#includestdio.hvoid main() FILE*fp=fopen(“TEST“,“wb“);fprintf(fp,“%d%5.0f%c%d“,58,76273.0,2278);fclose(fp); A. 58 76273-2278 B. 5876273.000000-2278 C. 5876273-2278 D. 因文件为二进制文件而不可读(分数:2.00)A.B.C. D.解析:解析 fprintf 函数工作时,多个数据间不会自动加分隔符,选项 A
38、 错误:浮点数的输出格式是“%5.0f”表明其小数部分输出 0 位,即没有输出,所以选项 B 也是错误的。31.有以下程序int f(int n)if(n=1)return 1;else return f(n-1)+1;main() int i,j=0;for(i=1;i3;i+)j+=f(i);printf(“%d/n“,j);程序运行后的输出结果是 A. 4 B. 3 C. 2 D. 1(分数:2.00)A.B. C.D.解析:解析 在 main 函数中,对 f(1)和 f(2)的值进行了累加。 f(1)=1 f(2)=f(1)+1=2 最后,j 的值为 1+2=332.用树形结构来表示实
39、体之间联系的模型称为_。 A. 关系模型 B. 层次模型 C. 网状模型 D. 数据模型(分数:1.00)A.B. C.D.解析:33.设有以下定义和语句int a32=1,2,3,4,5,6,*p3;p0=a1;则*(p0+1)所代表的数组元素是 A. a01 B. a10 C. a11 D. a12(分数:1.00)A.B.C. D.解析:解析 本题中首先定义了一个 3 行 2 列的数组 a,一个长度为 3 的指针数组 p,接着把地址 a1赋给 p0此时 p0为 a10的地址,p0+1 为 a11的地址,故*(P0+1)代表的元素为 a11。34.有以下程序:main() int k=4,
40、n=0;for(;nk;) n+;if(n%!=0)continue;k-; printf(“%d/n“,k,n);程序运行后的输出结果是( )。 A. 1,1 B. 2,2 C. 3,3 D. 4,4(分数:1.00)A.B.C. D.解析:解析 在本程序的 for 循环中,用到了一个 continue 语句,continue 语句的作用是停止本次循环,即不执行循环体内 continue 语句后面的其他语句,继续下次循环的条件判断。首先在 for 循环巾 n自加 1(值变为 1),然后执行后面的 if 语句,由于 if 语句后面括号的表达式(1%3!=0)的值为真,程序执行 continue
41、 语句,回到 for 循环的开始部分,并且判断 for 循环中的条件表达式(nk)为真,重复执行“n+”;”语句,如此循环直到 n=3 时,if 语句判定条件中表达式(3%3!=0)的值为假,程序执行 if 语句后面的“k-”语句,此时 k 的值为 3,不满足“nk”,退出 for 循环。故最后的 k 和 n 的值为 3 和3,选项 C 符合题意。35.有以下程序:main() int i;for(i=0;i3;i+)switch(i)case 0: prinft(“%d“,i);Case 2: prinft(“%d“,i);default: prinft(“%d“,i);程序运行后的输出结果
42、是( )。 A. 022111 B. 021021 C. 000122 D. 012(分数:1.00)A.B.C. D.解析:解析 程序中 for 循环了三次,第一次 i=O,执行 switch 语句中 case0:分支,直到遇到default 语句,退出 switch,这里共执行了 3 个输出语句分别输出 0、0、0,第二次循环 i=1,switch 语句中没有匹配的分支,故只执行 default 语句输出 1,退出 switch 语句;第三次循环 i=2,从 switch 语句中的 case2:开始执行,共执行了两个输出语句输出 2、2。最后输出的结果为 000122。所以, 4 个选项中
43、选项 C 符合题意。二、B填空题/B(总题数:15,分数:28.00)36.下列语句使指针 p 指向一个 double 类型的动态存储单元。 p=U U /U /Umalloc(sizeof(double);(分数:4.00)填空项 1:_ (正确答案:(double*))解析:37.下面程序执行后输出的结果是U U /U /U。 int m=13; int fun(int x,int y) int m=3; return(x*y-m); main() int a=7,b=5; printf(“%d/n“,fun(a,B) /m); (分数:1.00)填空项 1:_ (正确答案:2)解析:解析 本题变量 m 既是外部变量(值是 13),又是 fun 函数的局部变量(值为 3)。函数 fun(x*y-m)的值为 7*5-3=32,在 main 函数中,fun(a,b) /m 中的 m 应取外部变量的值 13,因此输出 2。38.以下程序是求矩阵 a,b 的和,结果存入矩阵 c 中,并按矩阵形式输出,请填空。 #includestdio.h main() int a34=13,-2,7,5,1,0,4,-3,6,8,0,2; int