1、二级 C 语言-33 及答案解析(总分:75.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:47.00)1.设有定义:int n1=0,n2,*p=,下列赋值语句中与 n2=n1; 语句等价的是U /U。 A. *p=*q; B. p=q; C. *p= D. p=*q;(分数:2.00)A.B.C.D.2.已知有结构体:struct sk int a;float b;data,*p;若有 p= C. p-data.a D. p.data.a(分数:2.00)A.B.C.D.3.以下程序的输出结果是( )。struct HAR int x, y; struct HAR *p
2、; h2; main() h0.x=1; h0.y=2; h1.x=3; h1.y=4; h0.p=h1; h1.p=h; printf(“%d%d/n“, (h0.p) -x, (h1.p) -y); A. 12 B. 23 C. 14 D. 32(分数:1.00)A.B.C.D.4.以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序:void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;in;j+)if(aiaj) t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7
3、,8,9,10,i;sort(for(i=0;i10;i+) printf(%d,“,aai);printf(“/n“);程序运行后的输出结果是( )。 A. 1,2,3,4,5,6,7,8,9,10, B. 10,9,8,7,6,5,4,3,2,1, C. 1,2,3,8,7,6,5,4,9,10, D. 1,2,10,9,8,7,6,5,4,3,(分数:1.00)A.B.C.D.5.有以下程序int f(int b 4) int i,j,s=0;for(j=0; j4; j+) i=j;if (i2) i=3-j;s+=bi j;return s;main ( ) int a4 4 =1,
4、2,3,4, 0,2,4,6, 3,6,9,12), 3,2,1,0;print f ( “%d/n“ , f(a);执行后的输出结果是 A. 12 B. 11 C. 18 D. 16(分数:1.00)A.B.C.D.6.算法的空间复杂度是指U /U。 A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 执行算法所需要的存储空间(分数:1.00)A.B.C.D.7.已知字母 A 的 ASCII 码值是 65,字母 a 的 ASCII 码值是 97,以下程序_。main() char a=A;int b=20;pxintf(“%d,%o“,(a=a+a,a+b,
5、b) ,a+a-A,b); A. 表达式非法,输出零或不确定值 B. 因输出项过多,无输出或输出不确定值 C. 输出结果为 20,141 D. 输出结果为 20,141,20A.B.C.D.8.视图设计一般有 3 种设计次序,下列不属于视图设计的是_。 A. 自顶向下 B. 由外向内 C. 由内向外 D. 自底向上(分数:1.00)A.B.C.D.9.下面概念中,不属于面向对象方法的是_。 A. 对象 B. 继承 C. 类 D. 过程调用(分数:1.00)A.B.C.D.10.有以下程序:char fun(char x ,char y)if(xy)return x;return y;main(
6、)int a=9,b;8,c=7;printf“%c/n“,fun(fun(a,B) ,fun(b,C) );程序的执行结果是U /U。 A. 函数调用出错 B. 8 C. 9 D. 7(分数:2.00)A.B.C.D.11.有以下程序(注:字符 a 的 ASCH 码值为 97):#includestdio.hmain()char*s=“abc“;do printf(“%d“,*s%10);+s;while(*s);程序运行后的输出结果是_。 A.789 B.abc C.7890 D.979899(分数:1.00)A.B.C.D.12.下列程序的输出结果是#include“stdio.h“#d
7、efine M(x,y) x%ymain() int a,m=12,n=100;a=M(n,m);printf(“%d/n“,a-); A. 2 B. 3 C. 4 D. 5(分数:1.00)A.B.C.D.13.有以下程序:#includevoid fun(int a,int b)(int t;f=a;a=b;b=t;)main()int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2)fun(ci,ci+1);for(i=0;i10;i+)printf(“%d,“,ci);printf(“/n“);程序的运行结果是U /U。 A. 1,2,3,4,5,
8、6,7,8,9,0, B. 2,1,4,3,6,5,8,7,0,9, C. 0,9,8,7,6,5,4,3,2,1, D. 0,1,2,3,4,5,6,7,8,9,(分数:2.00)A.B.C.D.14.若有下列说明语句int(* p)();则标识符 p 代表的是 U /U A. 一个用于指向函数的指针变量,函数返回值的类型为 int 型 B. 一个带回值类型为整型的函数名 C. 一个用于指向整型数据的指针变量 D. 一个带回值类型为指针类型的函数名(分数:1.00)A.B.C.D.15.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是 A. auto 和 register B.
9、 extern 和 register C. auto 和 static D. static 和 register(分数:2.00)A.B.C.D.16.下列叙述中正确的是 ( ) A.指令由操作数和操作码两部分组成 B.常用参数 xxMB 表示计算机的速度 C.计算机的一个字长总是等于两个字节 D.计算机语言是完成某一任务的指令集 (分数:1.00)A.B.C.D.17.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系x-y10 的是 A. abs(x-y)10 B. x-y-10 C. p1=p2; D. k=*p1*(*p2);(分数:1.00)A.B.C.D.20.下列写法正
10、确的是U /U。 A. main() int i=3,j; j=5 B. main() int i=3; C. main() D. main() ;(分数:2.00)A.B.C.D.21.有以下程序#include stdio.hint fun(int (*s)4,int n,int k)int m,i;m=s0kl;for(i=1;in;i+) if(sikm) m=sik;return m;main() int a44=1,2,3,4,11,12,13,14, 21,22,23,24, 31,32,33,34;printf(“%d/n“,fun(a,4,0);程序的运行结果是_。 A. 4
11、 B. 34 C. 31 D. 32(分数:2.00)A.B.C.D.22.若要求从键盘读入含有空格字符的字符串,应该使用函数_。 A. getc () B. gets() C. getchar() D. scanf()(分数:1.00)A.B.C.D.23.有以下程序:#includestdio.hmain()int k,j,s;for(k=2;k6;k+,k+)s=1;for(j=k;j6;j+)s+=j;printf(“%d/n“,s);程序运行后的输出结果是_。 A.6 B.10 C.24 D.40(分数:1.00)A.B.C.D.24.设有定义语句 int(*f)(int);,则以下
12、叙述正确的是_。 A. f 是基类型为 int 的指针变量 B. f 是指向函数的指针变量,该函数具有一个 int 类型的形参 C. f 是指向 int 类型一维数组的指针变量 D. f 是函数名,该函数的返回值是基类型为 int 类型的地址(分数:2.00)A.B.C.D.25.C 语言中运算对象必须是整型运算符的是 A. %= B. / C. = D. =(分数:1.00)A.B.C.D.26.下列程序的输出结果是_。#includestdio.hmain() char *p1,*p2,str50=“xyz“;p1=“abcd“;p2=“ABCD“;strcpy(str+2,strcat(
13、p1+2,p2+1);ptintf(“%s“,str); A. xyabcAB B. abcABz C. ABabcz D. xycdBCD(分数:1.00)A.B.C.D.27.有以下说明和定义语句:struct studentint age; char num8 ;struct student stu 3 = 20, “200401“ , 21, “200402“ , 19, “200403“ ;stract student * p = stu;以下选项中引用结构体变量成员的表达错误的是U /U。 A. (p+) -num B. p- num C. ( *p).num D. stu3.ag
14、e(分数:1.00)A.B.C.D.28.有以下程序#includestdio.h#includestring.hvoid fun(char*s,int?n)char*t;im i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strlen(si)strlen(sj)t=si;si=sj;sj=t;main()char*ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabce“;fun(ss,5);printf(“%s,%s/n“,ss0,ss4);程序的运行结果是U /U。 A.xy,aaaacc B.aaaacc,xy C.bcc,aabcc D
15、.aabcc,bcc(分数:1.00)A.B.C.D.29.有以下程序void fun(int *a,int i,int j) in t;if(ij)t=ai;ai=aj;aj=t;fun(a,+i,-j);main() int a=1,2,3,4,5,6,i;fun(a,0,5);for(i=0;i6;i+)printf(“%d“,ai);执行后输出结果是 A. 6 5 4 3 2 1 B. 4 3 2 1 5 6 C. 4 5 6 1 2 3 D. 1 2 3 4 5 6(分数:1.00)A.B.C.D.30.设 x、y 和 z 是 int 型变量,且 x=4,y=6,z=8,则下列表达式
16、中值为 0 的是U /U。 A.xpuchar(/n);若运行时从键盘上输入 OPEN THE DOOR CR(CR表示回车),则上面程序的输出结果是 ( ) A.oPEN tHE dOOR B.ope the door C.OPEN THE DOOR D.Open The Door(分数:1.00)A.B.C.D.32.软件设计中模块划分应遵循的准则是( )。 A. 低内聚低耦合 B. 高内聚低耦合 C. 低内聚高耦合 D. 高内聚高耦合(分数:2.00)A.B.C.D.33.若有说明:int*p1,*p2,n=8,m;下列均是正确赋值语句的选项是U /U。 A. p1=p2=*p2=p1;
17、 D. p1=p2=p1;(分数:2.00)A.B.C.D.34.下列说法不正确的是U /U。 A. 调用函数时,实参可以是表达式 B. 调用函数时,实参与形参可以共用内存单元 C. 调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等 D. 调用函数时,实参与形参的类型必须一致(分数:2.00)A.B.C.D.35.下列说法不正确的是U /U。 A. C 语言程序是以函数为基本单位的,整个程序由函数组成 B. C 语言程序的一条语句可以写在不同的行上 C. C 语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写 D. C 语言程序的每个语句都以分号结束(分数:
18、2.00)A.B.C.D.二、B填空题/B(总题数:15,分数:28.00)36.在深度为 7 的满二叉树中,度为 2 的结点个数为U U /U /U。(分数:2.00)填空项 1:_37.若按功能划分,软件测试的方法通常分为白盒测试方法和U U /U /U测试方法。(分数:1.00)填空项 1:_38.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为 1。(分数:2.00)填空项 1:_39.以下程序运行后的输出结果是U U /U /U。 int a=5; fun(int b) static int a=10; a+=b+; printf(“%d“,a); main() in
19、t c=20; fun(c); a+=c+; printf(“%d/n“,a); (分数:2.00)填空项 1:_40.以下程序运行后的输出结果是_。 main() char c1,c2; for c1=0,c2=9;c1c2;c1+,C2-) printf(“%c%c“,c1,c2); printf(“/n“); (分数:2.00)填空项 1:_41.下列程序可以将从键盘上输入的十进制数(10ng 型)以二到十六进制形式输出。 #includestdioh main() char b16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F; int c64,d,i=0,base;
20、 long n; printf(“enter a number:/n“);scanf(“%1d“, for(i=1;i5;i+) for(j=2;j=i;j+)putchar(#); (分数:1.00)填空项 1:_45.下列程序的运行结果是_。 #includestdio.h long func(int x) long p; if(x=0x=1) return(1); p=x*func(x-1); return(p); main() printf(“%d/n“, func(4); (分数:2.00)填空项 1:_46.以下程序运行后的输出结果是_。 main() int x=1,y=0,a=
21、0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; printf(“%d %d/n“, a, b); (分数:2.00)填空项 1:_47.下列程序段的输出结果是U U /U /U。 main() char b=“Hello,you“; b5=0; printf(“%s/n“,B) ; (分数:1.00)填空项 1:_48.以下程序的输出结果是U U /U /U。 main() char *p“BOOL“,“OPK“,“H“,“SP“; int i; fo
22、r(i=3, i=0; i-,i-)printf(“%c“,*pi); printf(“/n“); (分数:1.00)填空项 1:_49.下列程序运行后的输出的结果是_。 #includestdio.h main() char s20; scanf(“%s“,s); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。(分数:2.00)填空项 1:_50.以下程序的输出结果是U U /U /U。 #includestdio.h main() int s=1,2,3,4,i; int x=0; for(i=0;i4;i+) x=sb(s,x); printf(“%d“ ,x)
23、; printf(“/n“); sb(s1,y) int *s1,y; static int i1=3; y=s1i1; i1-; return(y);(分数:1.00)填空项 1:_二级 C 语言-33 答案解析(总分:75.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:47.00)1.设有定义:int n1=0,n2,*p=,下列赋值语句中与 n2=n1; 语句等价的是U /U。 A. *p=*q; B. p=q; C. *p= D. p=*q;(分数:2.00)A. B.C.D.解析:解析 在定义指针变量 p 和 q 时,分别把变量 n2 和 n1 的地址赋给了指针变
24、量 p 和 q,所以*p 和*q 中内容就分别是变量 n2 和 n1 的值,所以语句*p=*q 与语句 n2=n1 等价。因此选项 A)正确。2.已知有结构体:struct sk int a;float b;data,*p;若有 p= C. p-data.a D. p.data.a(分数:2.00)A.B. C.D.解析:解析 本题主要考查结构指针:p= struct HAR *p; h2; main() h0.x=1; h0.y=2; h1.x=3; h1.y=4; h0.p=h1; h1.p=h; printf(“%d%d/n“, (h0.p) -x, (h1.p) -y); A. 12
25、B. 23 C. 14 D. 32(分数:1.00)A.B.C.D. 解析:解析 本题考查的是 C 语言中结构体与链表。本题中是一个含有两个结点的循环链表。C 语言中结构体的定义为: struct 结构体类型名 成员项表; );4.以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序:void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;in;j+)if(aiaj) t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(for(i=0;i10;i
26、+) printf(%d,“,aai);printf(“/n“);程序运行后的输出结果是( )。 A. 1,2,3,4,5,6,7,8,9,10, B. 10,9,8,7,6,5,4,3,2,1, C. 1,2,3,8,7,6,5,4,9,10, D. 1,2,10,9,8,7,6,5,4,3,(分数:1.00)A.B.C. D.解析:解析 本题中首先定义一个长度为 10 的整型数组,并初始化为“1,2,3,4,5,6,7,8,9,10”,然后调用排序函数 sort(),对 aa3开始的 5 个元素进行从大到小的排序,aa0、aa1、aa2、aa8、aa9并没有变化。sort()执行完毕后,接
27、着执行后面的 for 语句输出数组 aa 中各个元素的值,所以输出为“1,2,3,8,7,6,5,4,9,10”。故 4 个选项中 C 正确。5.有以下程序int f(int b 4) int i,j,s=0;for(j=0; j4; j+) i=j;if (i2) i=3-j;s+=bi j;return s;main ( ) int a4 4 =1,2,3,4, 0,2,4,6, 3,6,9,12), 3,2,1,0;print f ( “%d/n“ , f(a);执行后的输出结果是 A. 12 B. 11 C. 18 D. 16(分数:1.00)A.B.C.D. 解析:解析 本题考核的知
28、识点是二维数组的定义、赋初值和对;维数组元素的引用。分析程序可知,函数 f()中的 for 循环作用,是将数组前三行中的对角线上的元素,即 b00、b11, b22和第一行的第四列元素即 b03累加到变量 s 中,然后将 s 的值返回。在主函数中首先定义了一个 4 行 4 列的二维数组,接着通过输出语句输出函数 f(a)的返回值。 调用 f(a)的返回值为 a00+a11+a22+a03=1+2+9+4=16。所以, 4 个选项中选项 D 符合题意。6.算法的空间复杂度是指U /U。 A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 执行算法所需要的存储空间
29、(分数:1.00)A.B.C.D. 解析:解析 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。7.已知字母 A 的 ASCII 码值是 65,字母 a 的 ASCII 码值是 97,以下程序_。main() char a=A;int b=20;pxintf(“%d,%o“,(a=a+a,a+b,b) ,a+a-A,b); A. 表达式非法,输出零或不确定值 B. 因输出项过多,无输出或输出不确定值 C. 输出结果为 20,141 D. 输出结果为 20,141,20A.B.C.
30、D.解析:解析 本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即 20。然后以八进制的形式输出a+a-A的值为 97 对应的八进制数 141,由于最后个表达式 b 没有对应输出格式的输出项表列就不会输出。8.视图设计一般有 3 种设计次序,下列不属于视图设计的是_。 A. 自顶向下 B. 由外向内 C. 由内向外 D. 自底向上(分数:1.00)A.B. C.D.解析:解析 视图设计一般有 3 种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际隋况灵活掌握,可以单独使用也可混合使用。9.下面概念中,不属于面向对象方法的是_。 A
31、. 对象 B. 继承 C. 类 D. 过程调用(分数:1.00)A.B.C.D. 解析:10.有以下程序:char fun(char x ,char y)if(xy)return x;return y;main()int a=9,b;8,c=7;printf“%c/n“,fun(fun(a,B) ,fun(b,C) );程序的执行结果是U /U。 A. 函数调用出错 B. 8 C. 9 D. 7(分数:2.00)A.B.C.D. 解析:解析 本题考核的知识点是函数的返回值以及返回值作为函数的参数。经过分析得出函数 fun()的功能是比较形参 x 和形参 y 的大小,返回较小的一个。函数 fun
32、()有两个参数。本题中,首先定义了三个整型变量 a、b 和 c,分别赋初值为 9、8 和 7。然后执行函数 fun(fun(a,b),fun (b,C)。在该函数中分别将 fun (a,b)和 fun(b,c)函数的返回值作为该函数的两个实参。在函数 fun (a,b)中,由于ab,故返回较小值 b 即 8,在函数 fun(b,C)中,由于 bc,故返回较小值 c 即为 7,因此调用函数fun(fun (a,b),fun (b,C),即 fun (8,7),故返回较小值为 7。11.有以下程序(注:字符 a 的 ASCH 码值为 97):#includestdio.hmain()char*s=
33、“abc“;do printf(“%d“,*s%10);+s;while(*s);程序运行后的输出结果是_。 A.789 B.abc C.7890 D.979899(分数:1.00)A. B.C.D.解析:解析 因为小写字符 a,b,c 的 ASCII 码值分别勾 97,98,99,而在 do while 循环语句中,每次对字符的 ASCII 码值取余数并输出,所以分别输出 7,8,9。12.下列程序的输出结果是#include“stdio.h“#define M(x,y) x%ymain() int a,m=12,n=100;a=M(n,m);printf(“%d/n“,a-); A. 2
34、B. 3 C. 4 D. 5(分数:1.00)A.B.C. D.解析:解析 带参数的宏定义命令行形式如下: #define 宏名(形参表)替换文本 在编译的时候编译预处理程序用“替换文本”来替换宏,即 M(n,m)被替换为 n%m,之后计算,将计算的结果赋给 a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。13.有以下程序:#includevoid fun(int a,int b)(int t;f=a;a=b;b=t;)main()int c10=1,2,3,4,5,6,7,8,9,0,i;for
35、(i=0;i10;i+=2)fun(ci,ci+1);for(i=0;i10;i+)printf(“%d,“,ci);printf(“/n“);程序的运行结果是U /U。 A. 1,2,3,4,5,6,7,8,9,0, B. 2,1,4,3,6,5,8,7,0,9, C. 0,9,8,7,6,5,4,3,2,1, D. 0,1,2,3,4,5,6,7,8,9,(分数:2.00)A. B.C.D.解析:解析 本题考查的是函数参数的传递。在 C 语言中,参数传递默认为传值,即改变函数中的形参不会影响调用函数时传递给函数的实参。所以,题目中的 fun()函数,看起来好像作用是交换两个参数的值,其实它
36、并不影响传递给它的任何实参,即调不调用它对程序一点也没有影响。所以主函数一开始初始化了 c10为1,2,3,4,5,6,7,8,9,0,经过第 1 个 for 循环后,什么变化都没有,再经过第 2个 for 循环原样输出,故应该选择 A)。14.若有下列说明语句int(* p)();则标识符 p 代表的是 U /U A. 一个用于指向函数的指针变量,函数返回值的类型为 int 型 B. 一个带回值类型为整型的函数名 C. 一个用于指向整型数据的指针变量 D. 一个带回值类型为指针类型的函数名(分数:1.00)A. B.C.D.解析:15.在 C 语言中,只有在使用时才占用内存单元的变量,其存储
37、类型是 A. auto 和 register B. extern 和 register C. auto 和 static D. static 和 register(分数:2.00)A. B.C.D.解析:解析 在 C 语言中只有自动变量和寄存器变量在使用时才占用内存单元。16.下列叙述中正确的是 ( ) A.指令由操作数和操作码两部分组成 B.常用参数 xxMB 表示计算机的速度 C.计算机的一个字长总是等于两个字节 D.计算机语言是完成某一任务的指令集 (分数:1.00)A. B.C.D.解析:17.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系x-y10 的是 A. abs(
38、x-y)10 B. x-y-10 C. p1=p2; D. k=*p1*(*p2);(分数:1.00)A.B. C.D.解析:解析 本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项 B)中 p2 为指向 int 型变量的指针,而 k 为 int 型变量,不能将 int 型变量直接赋值给指向 int 型变量的指针,所以选项 B)错误,应为 p2=82k。20.下列写法正确的是U /U。 A. main() int i=3,j; j=5 B. main() int i=3; C. main() D. main() ;(分数:2.00)A.B.C.D. 解析:解析 本题考查语句的基
39、本构成。选项 A)中 j=5 后面少了一个分号;选项 B)中少了“”;选项C)不是一个完整的函数定义格式,一个完整的函数定义格式还包括一对花括号;选项 D)正确,是一个空语句。21.有以下程序#include stdio.hint fun(int (*s)4,int n,int k)int m,i;m=s0kl;for(i=1;in;i+) if(sikm) m=sik;return m;main() int a44=1,2,3,4,11,12,13,14, 21,22,23,24, 31,32,33,34;printf(“%d/n“,fun(a,4,0);程序的运行结果是_。 A. 4 B.
40、 34 C. 31 D. 32(分数:2.00)A.B.C. D.解析:解析 在主函数中,定义并初始化了 4 行 4 列的二维数组 a,并通过调用 fun 函数,将 fun 函数中指向一维数组的指针变量 s 指向了二维数组 a 的首地址,使得指针变量 s 与数组 a 共用同一存储单元。在 fun 函数中,通过 for 循环,求得了数组 a 第 0 列中最大的值,并赋给 m 返回主函数。由于数组 a 第 0列的值分别为 1、11、21、31,故其最大值是 31。22.若要求从键盘读入含有空格字符的字符串,应该使用函数_。 A. getc () B. gets() C. getchar() D.
41、scanf()(分数:1.00)A.B. C.D.解析:评析:函数 getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受个字符(回车符也算是个字符),所以 getchar()不能用宋读入字符串。scanf()函数要求按定的格式来输入,若同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为个字符,也就无法读入空格字符。函数 gets()的作用是从终端输入个字符串 (包括空格)至字符数组,直到遇到换行符为止,所以可以用来键盘读入空格字符。23.有以下程序:#includestdio.hmain()int k,j,s;for(k=2;k6;k+,k+)s=1;
42、for(j=k;j6;j+)s+=j;printf(“%d/n“,s);程序运行后的输出结果是_。 A.6 B.10 C.24 D.40(分数:1.00)A.B. C.D.解析:解析 本题重点考查 for 语句循环嵌套。首先 k=2,进行一次循环后,k 自增两次,变成 4,这时s 为 1,即当 k=4 的时候,s=1,j=4,执行内层循环,s=1+4,j 自增 1 后等于 5,s=5+5,j 再自增 1 后即为 6,跳出内层循环。k 自增两次后等于 6,不成立,跳出外层循环。最后输出 s 的值,即为 10。因此 B选项正确。24.设有定义语句 int(*f)(int);,则以下叙述正确的是_。
43、 A. f 是基类型为 int 的指针变量 B. f 是指向函数的指针变量,该函数具有一个 int 类型的形参 C. f 是指向 int 类型一维数组的指针变量 D. f 是函数名,该函数的返回值是基类型为 int 类型的地址(分数:2.00)A.B. C.D.解析:25.C 语言中运算对象必须是整型运算符的是 A. %= B. / C. = D. =(分数:1.00)A. B.C.D.解析:解析 C 语言规定:求余运算符“%”的运算对象必须是整型。复合赋值运算符“%=”中包含%运算,它的运算对象也必须是整型。26.下列程序的输出结果是_。#includestdio.hmain() char *p1,*p2,str50=“xyz“;p1=“abcd“;p2=“ABCD“;strcpy(str+2,strcat(p1+2,p2+1);ptintf(“%s“,str); A. xyabcAB B. abcABz C. ABabcz D. xycdBCD(分数:1.00)A.B.C.D. 解析:解析 本题考查对字符串进行处理的函数 strcat()和 strcpy(),其中 strcat(P1,p2)是把字符串 p2 连至 p1 后面,strcpy(p1,p2)是把 p2 指向的串复制到 p1 指向的空间。27.有以下说明和定义语句:struct student