1、国家二级( C语言)笔试模拟试卷 212 及答案与解析 1 常采用的两种存储结构是 ( )。 ( A)顺序存储结构和链式存储结构 ( B)散列方法和索引方式 ( C)链表存储结构和数组 ( D)线性存储结构和非线性存储结构 2 结构化程序设计主要强调的是 ( )。 ( A)程序的规模 ( B)程序的效率 ( C)程序设计语言的先进性 ( D)程序的易读性 3 在面向对象方法中, ( )描述的是具有相似属性与操作的一组对象。 ( A)属性 ( B)事件 ( C)方法 ( D)类 4 有下列 二叉树,对此二又树前序遍历的结果为 ( )。 ( A) ACFXDBEYZ ( B) ABEFXYZCD
2、( C) ABCDEFXYZ ( D) ABDYECFXZ 5 C语言的基本单位是 ( )。 ( A)函数 ( B)过程 ( C)子程序 ( D)子函数 6 算法分析的目的是 ( )。 ( A)找出数据结构的合理性 ( B)找出算法中输入和输出之间的关系 ( C)分析算法的易懂性和可靠性 ( D)分析算法的效率以求改进 7 用链表表示线性表的优点是 ( )。 ( A)便于随机存取 ( B)花 费的存储空间较顺序存储少 ( C)便于插入和删除操作 ( D)数据元素的物理顺序与逻辑顺序相同 8 能正确表示 “当 x的取值在 1, 10和 100, 110范围内为真,否则为假 ”的表达式是 ( )。
3、 ( A) (x =1)&(x =10)&(x =100)&(X =110) ( B) (x =1)(x =10)(x =100)(x =110) ( C) (x =1)&(x =10)(x =100)&(x =110) ( D) (x =1)(x =10)&(x =100)(x =110) 9 以下有 4组用户标识符,其中合法的一组是 ( )。 ( A) For -sub Case ( B) 4d DO Size ( C) f2_G3 IF abc ( D) WORD void define 10 语句: “printf(“ d“, (a=2)&(b=-2); ”的输出结果是 ( )。 (
4、A)无输出 ( B)结果是不确定 ( C) -1 ( D) 1 11 以下叙述中不正确的是 ( )。 ( A)在不同的函数中可以使用相同名字的变量 ( B)函数中的形式参数是局部 变量 ( C)在一个函数内定义的变量只在本函数范围内有效 ( D)在一个函数内的复合语句中定义的变量在本函数范围内有效 12 以下能正确定义二维数组的是 ( )。 ( A) int a3; ( B) int a3=2*3); ( C) int a3=); ( D) int a23=(1), 2), 3, 4); 13 下列程序的输出结果是 ( )。 #include main() int a=3, b=2, c=1;
5、 if(a b) if(b 0)c=0; else c+; print(“ d n“, c); ( A) 2 ( B) 0 ( C) 1 ( D)不确定的值 14 要求通过 while循环不断读人字符,当读入字母 N时结束循环,若变量已正确定义,下列正确的程序段是 ( )。 ( A) while(ch=getchar()!=N)printf(“ c“, ch); ( B) while(ch=getchar()!=N)printf(“ c“, ch); ( C) while(ch=getchar()=N)printf(“ c“, ch); ( D) while(ch=getchar()=N)pr
6、intf(“ c“, ch); 15 下列说法不正确的是 ( )。 ( A)调用函数时,实参可以是表达式 ( B)调用函数时,实参与形参可以共用内存单元 ( C)调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等 ( D)调用函数时,实参与形参的类型必须一致 16 下列选项中不是字符常量的是 ( )。 ( A) v ( B) x2a ( C) a ( D) 0 17 若已包括头文件 且已有定义 char s118, s2=“ABCDE“)和 int i,现要将字符串 “ABCDE“赋给 s1,下列语句错误的是 ( )。 ( A) strcpy(s1, s2) ( B) strc
7、py(s1, “ABCDE“); ( C) s1=“ABCDE“; ( D) for(i=0; i 6; i+)s1i=s2i 18 在位运算中,操作数每左移两位,其结果相当于 ( )。 ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作数除以 4 ( D)操作数乘以 4 19 以下程序的输出结果是 ( )。 main() int a=7, b=8, *p, *q, *r; p=&a; q=&b; r=p; p=q; q=r; printf(“ d, d, d, d n“, *p, *q, a, b); ( A) 8, 7, 8, 7 ( B) 7, 8, 7, 8 ( C) 8,
8、7, 7, 8 ( D) 7, 8, 8, 7 20 有下列程序: fun(int x, int y) static int m=0, i=2; i+=+m; m=i+x+y; return m; main() int j=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 21 以下程序的输出结果是 ( )。 main() int a33=1, 2, 3, 4), 5, 6, i
9、, j, s=0; for(i=1; i 3; i+) for(j=0; j =i; j+)s+=aij; printf(“ d n“, s); ( A) 18 ( B) 19 ( C) 20 ( D) 21 22 有下列程序: main() int k=5; while(-k) printf(“ d“, k=1); printf(” n”); 执行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 4 ( D)死循环 23 若有定义: “int a23; ”,则对 a数组的第 i行第 j列元素的正确引用为 ( )。 ( A) *(*(a+i)+j) ( B) (a+i)j ( C
10、) *(a+i+j) ( D) *(a+i)+j 24 下列能正确进行字符串赋值的是 ( )。 ( A) char s5=“ABCDE“; ( B) char s5=A, B, C, D, E); ( C) char*s; s=“ABCDE“; ( D) char*s; printf(“ s“, s); 25 现有以下结构体说明和变量定义,如图所示,指针 p、 q、 r分别指定一个链表中连续的 3个结点。 struct node har data; struct node*next; *p, *q, *r; 现要将 q和 r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是
11、 ( )。 ( A) q- next=r- next; p- next=r; r- next=q; ( B) q- next=r; q- next=r- next; r- next=q; ( C) q- next=r- next; r- next=q; p- next=r; ( D) q- next=q; p- next=-r; q- next=r- next; 26 有下列程序: main() int i, j, x=0; for(i=0, i 2; i+) x+; for(j=0; j =3; j+) if(j 2)continue; x+; x+; printf(“x= d n“, x)
12、; 程序执行后的输出结果是 ( )。 ( A) x=4 ( B) x=8 ( C) x=6 ( D) x=12 27 有下列程序: int funl(double a)(return a*=a; int fun2(double x, double y) double a=0, b=0; a=fun 1(x); b=fun1(y); return(int)(a+b); main() double w; w=fun2(1 1, 2 0), ) 程序执行后变量 w中的值是 ( )。 ( A) 5 21 ( B) 5 ( C) 5 0 ( D) 0 0 28 有下列程序: main() int i,
13、s=0, t=1, 2, 3, 4, 5, 6, 7, 8, 9; for(i=0; i 9; i+=2)s+=*(t+i); printf(“ d n“, s); 程序执行后的输出结果是 ( )。 ( A) 45 ( B) 20 ( C) 25 ( D) 36 29 有下列程序: int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(“ d“, &x); x=fun(x); printf(“ d n“, x); 执行程序时给变量 x输入 10,程序的输出结果是 ( )。 ( A) 55 ( B)
14、 54 ( C) 65 ( D) 45 30 有下列程序: int fun(int x, int n) static int sum=0, i; for(i=0; i n; i+) sum+=xi; return sum; main() int a=1, 2, 3, 4, 5, b=6, 7, 8, 9, s=0; s=fun(a, 5)+fun(b, 4); printf(“ d n“, s); 程序执行后的输出结果是 ( )。 ( A) 45 ( B) 50 ( C) 60 ( D) 55 31 有下列程序: main() char*p=“3697“, “2584“; int i, j;
15、long num=0; for(i=0; i 2; i+) j=0; while(pij!= 0) if(pij- 0) 2)num=10*num+pjj-0; j+=2: printf(“ d n“, num); 程序执行后的输出结果是 ( )。 ( A) 35 ( B) 37 ( C) 39 ( D) 3975 32 以下程序的输出结果是 ( )。 main() char st20=“hello 0 t “; printf(“ d d n“, strlen(st), sizeof(st); ( A) 9 9 ( B) 5 20 ( C) 13 20 ( D) 20 20 33 若有以下的定
16、义: “int t32; ”,能正确表示 t数组元素地址的表达式是 ( )。 ( A) &t32 ( B) t3 ( C) t1 ( D) t22 34 函数 fseek(pf, OL, SEEK_END)中的 SEEK_END代表的起始点是 ( )。 ( A)文件开始 ( B)文件末尾 ( C)文件当前位置 ( D)以上都不对 35 下述程序的输出结果是 ( )。 #include main() int i; for(i=1; i =10; i+) if(i*i =20)&(i*i =100) break; printf(“ d n“, i*i); ( A) 49 ( B) 36 ( C)
17、25 ( D) 64 36 若有定义 “int b8, *p=b; ”,则 p+6表示 ( )。 ( A)数组元素 b6的值 ( B)数组元素 b6的地址 ( C)数组元素 b7的地址 ( D)数组元素 b0的 0值加上 6 37 设 变量已正确定义,则以下能正确计算 f=n!的程序是 ( )。 ( A) f=0; for(i=1; i =n; i+)f*=i; ( B) f=1; for(i=1; i n; i+)f*=i; ( C) f=1; for(i=n; i 1; i+)f*=i; ( D) f=1; for(i-n; i =2; i-)f*=i; 38 下述程序执行的输出结果是 (
18、 )。 #include stdio h main() char a24; strcpy(a, “are“); strcpy(a1, “you“); a03=&; printf(“ s n“, a); ( A) are&you ( B) you ( C) are ( D) & 39 设 x=011050,则 x=x&01252的值是 ( )。 ( A) 0000001000101000 ( B) 1111110100011001 ( C) 0000001011100010 ( D) 1100000000101000 40 在 “文件包含 ”预处理语句的使用形式中,当 #include后面的文件
19、名用 (双引号 )括起时,寻找被包含文件的方式是 ( )。 ( A)直接按系统设定的标准方式搜索目录 ( B)先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索 ( C)仅仅搜索源程序所在目录 ( D)仅仅搜索当前目录 41 有以下程序,其中函数 f的功能是将多个字符串按字典顺序排序 ( )。 #include void f(char*p, int n) char*t; int i, j; for(i=0; i n-1; i+) for(j=i+1; j n; j+) if(strcmp(pi, pj 0)t=pi; pi=pj; pj=t; ) main() char *p5=“
20、abe“, “aabdfg“, “abbd“, “dcdbe“, “cd“; f(p, 5); printf(“ d n“, strlen(p1); 程序运行后的输出结果是 ( )。 ( A) 2 ( B) 3 ( C) 6 ( D) 4 42 下述程序用来输出两个字符串前 7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是 ( )。 #include main() char s1=“chinese“, s2=“japanese“; int i; for(i=0; sli= 0&s2i!= 0; i+) if(s1i=s2i&i 7) _; ( A) putchar(s2i); pu
21、tchar(i) ( B) puts(sii, i) ( C) printf(“ c d n“, s2i, i) ( D) printf(“ c“, s1i); printf(“ d n“, i) 43 数据库系统的主要特点为数据集成性、数据 _和低冗余性、数据独立性和数据统一管理和控制。 44 最简单的交换排序方法是 _。 45 单元测试又称模块测试,一般采用 _测试。 46 已知 “int a=2, b=2, c=3; ”,则 执行完语句 “a*=18+(b+)-(+c); ”后, a的值是_。 47 设有以下宏定义: #define A 2 #define B A+3 则执行赋值语句 “
22、t=B*2; ”后, int型变量 t的值为 _。 48 在面向对象方法中,类的实例称为 _。 49 若想通过以下输入语句使 a中存放字符串 1234, b中存放字符 5,则输人数据的形式应该是 _。 char a10, b; scanf(“a= s b= c“, a, &b); 50 下面程序的输出结果是 _。 #define MAX 3 int aMAX; main() funl(); fun2(a); printf(“ n“); funl() int k, t=0; for(k=0: k MAX; k+, t+)ak=t+t; fun2(int b) int k; for(k=0; k
23、MAX; k+) printf(“ d“, *(b+k); 51 下列程序运行的结果是 _。 int k=0; void fun(int m) m+=k, k+=m; printf(“m= dk= d“, m, k+); main() int i=4; fun(i+); printf(“i= dk= d n“, i, k); 52 下列程序的运行结果是 _。 main() int a=2, b=7, c=5; switch(a 0) case 1: switch(b 0) case 1: printf(“); break; case 2: printf(“!“); break; case 0:
24、 switch(c=5) case 0: printf(“*“); break; case 1: printf(“#“); break; case 2: printf(“$“); break; default: printf(“&“) printf(“ n“); 53 设有定义语句: “int a3=0), 1), 2); ”,则数组元素 a12的值是_。 国家二级( C语言)笔试模拟试卷 212 答案与解析 1 【正确答案】 A 【试题解析】 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。 2 【正确答案】 D 【试题解析】 程序不光是编写完就结束了,为了测试 和维护程序,往
25、往还有其他人阅读和跟踪程序。冈此程序设计的风格应该强调简单和清晰,即程序的易读性, “清晰第一,效率第二 ”。 3 【正确答案】 D 【试题解析】 类 (class)描述的是具有相似属性与操作的一组对象具体对象是类的实例。 4 【正确答案】 D 【试题解析】 所谓二叉树的前序遍历是指先访问根结点,访问左子树,最后访问右子数。本题中予为 DYEBEAFCZX,后序为 YDEBFZXCA。 5 【正确答案】 A 【试题解析】 C语言是函数式的语言。它的基本组成单位是函数,在 C语言中任何程序都是由一个或者多个函数组。 6 【正确答案】 D 【试题解析】 算法分析是指对一个算法的运行时间和占用空间做
26、定量的分析,计算相应的数量级,并用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。 7 【正确答案】 C 【试题解析】 数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构。元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐个元素查找 ,因此查找的时间相对更长。 8 【正确答案】 C 【试题解析】 本题考查逻辑与 (&)和逻辑或 ( )运算符的使用。 x值在 1, 10之间, C语言中可以写成 x值在 100, 110之间, C语言表达式应写成 “(x=100
27、)&(x =110)”; 1, 10和 100, 110满足任意条件就可以,所以是逻辑或的关系,因此只要将前两个表达式用逻辑或运算符连接起来即可,所以最后的表达式: (x =1)&(x =10)&(x =110)。 9 【正确答案】 C 【试题解析】 在 C语言中,标识 符是由字母、数字和下划线组成,其中开头必须是字母或下划线,排除选项 A和 B。 C语百中还规定标识符不能为 C语言的关键字,而选项 D中的 void 为关键字。 10 【正确答案】 D 【试题解析】 因为在逻辑表达式中,两边的赋值表达式都成立,即值为 1,故选择 D选项。 11 【正确答案】 D 【试题解析】 在一个函数中的复
28、合语中定义的变量,只能在这个复合语句范围内有效。 12 【正确答案】 B 【试题解析】 选顶 A中对于二维数组,必须通过赋值的个数来确定其长度,没有赋值则无法确定,选项 C中赋 的是空值,也不能确定其行下标,而选项 D中定义的两行三列,而赋值的却是三行两列。 13 【正确答案】 C 【试题解析】 第一个 if 语句,先判断条件,发现 a b 不成立,不再执行下列的语句,直接执行最后的 printf输出语句,然后结束程序,整个过程 c的值没有发生变化。 14 【正确答案】 A 【试题解析】 while循环的执行过程如下: 计算 while后面圆括号中表达式的值。当值为非 0时,执行步骤 ;当值为
29、 0时,执行步骤 。 执行循环体一次。 转去执行步骤 。 退出循环。在选项 A中,表达式 (ch=getchar()!=N表示输入的字符不等于 N,妇果这个条件表达式成立则执行循环体打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于 N,则退出循环。所以选项 A为正确答案。 15 【正确答案】 B 【试题解析】 本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式。实参将数值或表达式的值传递给形参,西而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。 16 【正确答案】 D 【试 题解析】 C语言
30、规定,一个字符常量代表 ASCII码字符集里的一个字符在程序中用单引号括起来以便区分。 v表示的是竖向跳格; kx2a表示的是两像十六进制数; a表示的是字符 a对应的 ASCII码值。 “ 0“用双引号故不正确。 17 【正确答案】 C 【试题解析】 数纽名 s1是代表 s1数组首地址的地址常量,因为 “=”左边不能出现常量,所以 s1=“ABCDE“的方法是错误的。 18 【正确答案】 D 【试题解析】 左移 n位相当于乘以 2的 n 次幂,右移 n位相当于除以 2的 n 次幂。 19 【正确答案】 C 【试题解析】 在 “r=p; p=q; q=r; ”三个语句是表示 p与 q 交换,经
31、过交换后 p指向 b的地址, q 指向 a的地址,因此最后输出为 8, 7, 7, 8,故选择 C选项。 20 【正确答案】 B 【试题解析】 变量 m和 i声明为局部静态变量,因此第 1次调用 fun()函数后局部静态变量 m和 i的值为 5和 3,第 1次调用结束时,它们的值不变,第 2坎调用时, m和 i的初始值分别为 5和 3,在执行 “i+=m+1”,后, i的值为 9,因此,最终 m的值为 11。 21 【正确答案】 A 【试题解析 】 循环的作用是求行下标从 1到 2列下标从 0到 i的元素之和,即s=a10+a11+a11+a20+a21+a22=3+4+5+6+0=18。 2
32、2 【正确答案】 A 【试题解析】 在程序语句中, k的初始值为 5进行第 1次 while循环后, k 自减1为 4,非 0,执行循环体里的 printf语句,输出 k,此时 k的馈变为 1。程序执行第 2次循环时, k自减 1变为 0,为假,遇出 while循环语句。所以程序的最后结果为 1。 23 【正确答案】 A 【试题解析】 通过地址来引用数组元素的方法有下列 5种: (1)aij;(2)*(ai+j); (3)*(*(a+j)+j); (4)*(aij); (5)(&a00+3*i+j)。故 A正确。 24 【正确答案】 C 【试题解析】 选项 A、 B 的空间不够;字符串存储要有
33、结柬符 0,且要占用一个空间, printf用来输出字符,不能输入字符串。 25 【正确答案】 D 【试题解析】 由题目中线性链表的定义可知,要将 q 和 r所指的结点交换前后位置,只要使 q指向 r的后一个结点, p 指向 r结点 , r指向 q结点即可。而在选项D中, r- next=q,这时 r指向的节点为 q; p- next=r,这时 p 指向的节点为 r;q- next=r- next。因为 r节点已经指向 q,所以执行这个语句后 q又指向 q,所以选项 D不正确。 26 【正确答案】 B 【试题解析】 在第 1次外层 for循环中,首先 x+得到 x=1进入到内层 for循环,只
34、有循环 j的值为奇数时,变量 x的值才自加 1,所以在内层 for循环执行过程中,变量 x的值自加两次当退出内层 for循环时, x=3,然后执行 x+,得到x=4。在进入执行第 2次外 屡 for循环中,首先 x+得到 x=5。进入到内层 for循环,只有循环变量 j的值为奇数时,变量 x的值才自加 1所以在内层 for循环执行过程中,变璧 x的值自加 l两次,当退出内层 for循环时, x=7,然后执行x+,得到 x=8所以打印输出变量 x的值为 8。 27 【正确答案】 C 【试题解析】 子函数 fun1(double a)的功能是返回 a的平方值的整数部分。子函数 fun2(doubl
35、e x, double y)的功能是返回 x的平方值的整数部分与 y的平方值的整数部分的和。又因为题中变量 w 的定义为 double型,函数 fun(2)的定义为 int型,按照备类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量 w 的值为 5 0。 28 【正确答案】 C 【试题解析】 在 for循环语句中自变量 i从 0开始,每次自加 2,执行 s+=*(t+i)语匈,因为 C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此, *(t+i)代表数组的第 i+1 个元素。所以程序运行的结果是1+3+5+7+9=25,即变量 s的值等于 25。 29
36、 【正确答案】 A 【试题解析】 本题在函数 int fun(int n)的定义中又出现了对函数 fun 的调用,所以函数 fun 是递归函数。因而在主函数中调用 x=fun(x)时,当输入 10赋给变量 x时,递归调用的过程为 fun(10)=10+fun(9)=10+9+fun(8)=10+9+8+fun(7) =10+9+8+7+fun(6)=10+9+8+7+6+fun(6) =10十 9+8+7+6+5+fun(4) =10+9+8+7+6+5+4+fun(3) =10+9+8+7+6+5+4+3+fun(2) =10+9+8+7+6+5+4+3+2+fun(1) =10+9+8+7
37、+6+5+4+3+2=55 30 【正确答案】 C 【试题解析】 在函数 int fun(int x, int n)的定义中,变量 sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数 int fun(int x, int n)的功能是求出数组 x备个元素的和,所以在主函数中,调用函数 fun(a 5)后,变量 sum=1+2+3+4+5=15,当再次调用fun(b, 4)后,变量 sum=15+6+7+8+9=45,所以 s=15+45=60。 31 【正确答案】 D 【试题解析】 执行第一次 for循环时用表达式 pij!= 0来到断
38、字符串数组指针 p是否到达字符串的结尾,如果没有到达,继续执行 while中的语句。 if语句表示 (pijj- 0)除 2的余数不为 0时,即字符串所有奇数,执行后面的语句。所以退出第 1次 for的循环体时,输出为 397,执行第 2次循环体。对字符串 “2584”进行处理,输出结果为 5,因而最后输出结果为 3975。 32 【正确答案】 B 【试题解析】 从题目中可知, 0、 t、 分剐为一个字符,而 sizeof是求字节个数的函数,其中包括 0占的字节, strlen函数是求数组长度的函数,其以 0结束,因此 strlen的值为 5, sizeof 的值为 20。 33 【正确答案】
39、 C 【试题解析】 数组的下标是从 0开始的, A中越界,行下标和列下标都不能越界; B中,虽然是个地址,但是电同样越界了;选项 C中表示的是第一个的首地址;选项 D表示的为其元素的值,并不是地址。 34 【正确答案】 B 【试题解析】 SEEK_SET 代表文件的开始, SEEK_END代表文件朱尾,SEEK_CUR代表文件当前位置。 35 【正确答案】 C 【试题解析】 当 if 执行到第一个满足 (i*i =20)&(i*i =100)这个条件的;出现时,通过 break 语句跳出循环,执行下面的 printf 语句。 36 【正确答案】 B 【试题解析】 指针中存放的是变量的地址,指针
40、也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中 p+6指的是将指针向后移动了 6个存储单元即指 向 b6,存放的是 b6的地址。 37 【正确答案】 D 【试题解析】 由 n!的数字定义可知 n!=n*(n-1)*(n-2)*1 。在选项 A中由于 f的初值为 0,在 for循环语句中, f依次乘以 1, 2, 3, , n,最后计算得到f=n!=0,所以选项 A不正确。在选项 B 中, f的初值为 1,在 for循环语句中, f依次乘以 1, 2, 3, , (n-1),最后计算得到 f=(n-1)!,所以选项 B不正确。在选项C中, f的初值为 1,在
41、for循环语句中, f依次乘以 n, n+1, n+2, ,所以选项 C不正确。在选项 D中, f的初值为 1,在 for循环语句中, f依次乘以 n, n-1, n-2 , 2,最后计算得到 f=n!,所以选项 D正确。 38 【正确答案】 A 【试题解析】 strcpy 实现的功能是复制,该操作把 are复制到 a中 a03=&,且 strcpy(a1, “you“)把 you 复制到 a1中,故输出 a为 “are&you”。 39 【正确答案】 A 【试题解析】 本题主要考查按位与运算, x=011050的二进制形式为00010010000101000, 01252的二进制形式为 00
42、00001010101010,两者相与得0000001000101000。 40 【正确答案】 B 【试题解析】 #include“文件名 ”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。 41 【正确答案】 D 【试题解析】 函数 void f的功能是将字符指针数组 *p中的每个字符串按照从小到大的顺序排序。在主函数 main()中,调用 f(p, 5)后,字符指针数组 *p5中的字符串按照字典顺序从小到大排列为如下形式,即 *p5=“aabd fg“, “abbd“,“abc“, “cd“, “dcdbe“),因此 p1=“ahd
43、b“, strlen(p1)=4。 42 【正确答案】 C 【试题解析】 本题考查输出函数 putchat的功能,即把字符输出到标准输出设备; puts是把指向的字符串输出到标准输出设备。 43 【正确答案】 高共享性。 【试题解析】 数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。 44 【正确答案】 冒泡排序。 【试题解析 】 交换排序是指借助数据元素之间的互相交换进行排序的一种方法。通过相邻元素之问的相互交换逐步将线性表变得有序是一种最简单的交换排序方法。 45 【正确答案】 白盒。 【试题解析】 单元测试 (模块测试 )是开
44、发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。白盒测试针对程序的逻辑结构设计测试实例用逻辑覆盖率来衡量测试的完整性。对于单元测试,一般采用白盒测试。 46 【正确答案】 32。 【试题解析】 本题考查自加运算符 (+)和自减运算符 (-)。 +和 -的几个特 点: 只能作用于变量,不能用于表达式或常量; 前缀形式是在使用变量之前先将其值加 1或减 l,后缀形式是先使用变量原来的值,使用完后再使其加 1或减 1。题中: +c计算时 c=4, b+计算时 b=2, 18+(b+)-(+c)=16, a*=16,得 a=32。 47 【正确答案】 8。 【试题解析】 本题
45、考查带参数的宏的定义及相关运算。运算过程为:t=B*2=A+3*2=2+3*2=8。 48 【正确答案】 对象。 【试题解析】 类是具有相同特征的对象的抽象,对象是类的实例。 49 【正确答 案】 a=1234 b=5。 【试题解析】 在 sanf函数中 s用于接收字符串, c为字符,所以输入形式应为 a=1234, b=5。 50 【正确答案】 024。 【试题解析】 本题中有 2个函数调用,当执行完 funl 函数后, a数组中的元素为0, 2, 4,执行 fun2函数是输出 a由的元素,故输出的结果为 024。 51 【正确答案】 m=4 k=4 i=5 k=5。 【试题解析】 程序中
46、k 为全局变量,在主函数中,局部变量 i=4所以 fun(i+)就调用 fun(4),在函数 fun(4)中输出 m=4, k=4然后变量 k+等于 5,变量 i+等于 5,所以主函数的 printf(“i= dk= d n“, i, k);语句输出 i=5, k=5。 52 【正确答案】 #&。 【试题解析】 本题考查 switch case语句,首先判断 a 0成立,由已知条件知,这个表达式的结果为真,所以执行 “case 1:分支 ”,再判断 b 0是否成立,由已知条僻如道这个关系表达式的结果为假,图而退出 “case1:分支 ”,抗行 “case 0:分支 ”,又因为表达式 c=5的值为真。所以输出符号 “#”,退出内层 switch 语句,再执行 “default: printf(“&“); ”语句,输出符号 &。 53 【正确答案】 0。 【试题解析】 由二维数组 a3=0, 1, 2可知,这是一个三行三列的二维数组,数组元素 a12的值取 inr类型的默认值 0。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1