1、国家二级( C语言)笔试模拟试卷 29及答案与解析 1 下列描述中正确的是 ( )。 ( A)程序就是软件 ( B)软件开发不受计算机系统的限制 ( C)软件既是逻辑实体,又是物理实体 ( D)软件是程序、数据与相关文档的集合 2 用树形结构表示实体之间联系的模型是 ( )。 ( A)关系模型 ( B)网状模型 ( C)层次模型 ( D)以上三个都是 3 下列关于栈的描述中错误的是 ( )。 ( A)栈是先进后出的线性表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D)对栈的插入 与删除操作中,不需要改变栈底指针 4 在长度为 64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为
2、( )。 ( A) 63 ( B) 64 ( C) 6 ( D) 7 5 对于长度为 n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ( )。 ( A)冒泡排序为 n/2 ( B)冒泡排序为 n ( C)快速排序为 n ( D)快速排序为 n(n-1)/2 6 下列对于软件测试的描述中正确的是 ( )。 ( A)软件测试的目的是证明程序是否正确 ( B)软件测试的目的是使程序运行 结果正确 ( C)软件测试的目的是尽可能多地发现程序中的错误 ( D)软件测试的目的是使程序符合结构化原则 7 为了使模块尽可能独立,要求 ( )。 ( A)模块的内聚程度要尽量高,且各模块间的耦合
3、程度要尽量强 ( B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 ( C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 ( D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 8 下列对于线性链表的描述中正确的是 ( )。 ( A)存储空间不一定连续,且各元素的存储顺序是任 意的 ( B)存储空间不一定连续,且前件元素一定存储在后件元素的前面 ( C)存储空间必须连续,且前件元素一定存储在后件元素的前面 ( D)存储空间必须连续,且各元素的存储顺序是任意的 9 数据独立性是数据库技术的重要特点之一,所谓数据独立性是指 ( )。 ( A)数据与程序独立存放 ( B)不同的
4、数据被存放在不同的文件中 ( C)不同的数据只能被对应的应用程序所使用 ( D)以上三种说法都不对 10 数据的存储结构是指 ( )。 ( A)存储在外存中的数据 ( B)数据所占的存储空间量 ( C)数据在计算机中的顺序存储方式 ( D)数据的逻辑结构在计算机中的表示 11 现有以下结构体说明和变量定义,如图所示,指针 P, q, r分别指向一个链表中连续的三个结点。struct node char data; struct node *next; *p, *q, *r; 现要将 q和 r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是 ( )。 ( A) q- nex
5、t=r- next; p- next=r; r- next=q; ( B) p- next=r; q- next=r- next; r- next=q; ( C) q- next=r- next; r- next=q; p- next=r; ( D) r- next=q; P- next=r; q- next=r- next; 12 有以下程序: #include stdio.h main() union charch2; int d; s; s.d=0x4321; printf(“%x, %xn“, s.ch0, s.ch1); 在 16位编译系统 上,程序执行后的输出结果是 ( )。 (
6、A) 21, 43 ( B) 43, 21 ( C) 43, 00 ( D) 21, 00 13 以下四个程序中,完全正确的是 ( )。 ( A) #include stdio.h main( ); /* programmlng* / printf( “programming! n“ ); ( B) #include stdio.h main( ) /*/programming printf(“programming! n“); ( C) #include stdio.h main( ) /*programming* / printf( “programming! n“ ); ( D) inc
7、lude stdio.h main ( ) /*/* programming*/*/ printf( “programming! n“ ); 14 有以下程序 :int fun1 (double a) return a * =a;int fun2 ( double x, double y ) double a=0,b=0; a = fun1 (x) ;b = fun1 (y); return(int) (a + b); main() doublew; w=fun2(1.1, 2.0); 程序执行后变量 w中的值是 ( )。 ( A) 5.21 ( B) 5 ( C) 5 ( D) 0 15 以
8、下能正确定义字符串的语句是 ( )。 ( A) char str=064; ( B) char str=“x43“; ( C) char str=“; ( D) char str=“0“; 16 以下数组定义中错误的是 ( )。 ( A) int x3=0; ( B) int x2 3=1, 2, 3, 4, 5, 6; ( C) int x3=1, 2, 3, 4, 5, 6; ( D) int x23=1, 2, 3, 4, 5, 6; 17 若要求从键盘读人含有空格字符的字符串,应该 使用函数 ( )。 ( A) getc() ( B) gets() ( C) getchar() ( D
9、) scanf() 18 以下叙述中错误的是 ( )。 ( A) C程序中的 #include和 #define行均不是 C语句 ( B)除逗号运算符外,赋值运算符的优先级最低 ( C) C程序中, j+;是赋值语句 ( D) C程序中, +、 -、 *、 /、 %是算术运算符,可用于整型和实型数的运算 19 以下不合法的字符常量是 ( )。 ( A) 018 ( B) “ ( C) ( D) xcc 20 若下列各选项中所有变量已正确定义,函数 fun通过 return语句返回一个函数值,以下选项中错误的程序是 ( )。 ( A) main( ) x = fun(2,10); float f
10、un(int a, int b) ( B) float fun( int a,int b) main( ) x = fun(i,j); ( C) float fun(int, int); main( ) x=fun(2,10); float fun(iht a, int b) ( D) main( ) float fun(int i, int j); x = fun(i,j); float fun(int a,int b) 21 以下程序的输出结果是 ( )。 #include stdio.h main() int k=17; printf(“%d,%o,%xn“,k,k,k); ( A) 1
11、7, 021, 0x11 ( B) 17, 17, 17 ( C) 17, 0x11, 021 ( D) 17, 21, 11 22 以下说法中正确的是 ( )。 ( A) #define和 printf都是 C语句 ( B) #define是 C语句,而 printf不是 ( C) printf是 C语句,但 #define不是 ( D) #define和 printf都不是 C语句 23 以下选项中,能定义 s为合法的结构体变量的是 ( )。 ( A) typedef struct abc double a; char b10; s; ( B) struct double a; char
12、b10; s; ( C) struct ABC double a; char b10; ABC s; ( D) typedef ABC double a; char b10; ABC s; 24 以下程序的输出结果是 ( )。 #include stdio.h main() int i,x33=9,8,7,6,5,4,3,2,1,*p= for(i=0;i 4;i+=2) printf(“%d“,pi); ( A) 52 ( B) 51 ( C) 53 ( D) 97 25 已知字符 0的 ASCII码为十六进制的 30,现有程序如下: #include stdio.h main() unio
13、n unsigned char c; unsigned int i4; z; z.i0=0x39; z.i1=0x36; printf(“%cn“,z.c); 此程序的输出结果是 ( )。 ( A) 6 ( B) 9 ( C) 0 ( D) 3 26 在 C语言中,下列各选项为不正确的 int类型的常数足 ( )。 ( A) 32768 ( B) 0 ( C) 37 ( D) 0xAF 27 以下程序的输出结果是 ( )。 #include stdio.h int fan(int); main() int w=5; fun(w); printf(“n“); fun(int k) if(k 0)
14、 fun(k-1); printf(“%d“,k); ( A) 5 4 3 2 1 ( B) 0 1 2 3 4 5 ( C) 1 2 3 4 5 ( D) 5 4 3 2 1 0 28 有以下程序: #include stdio.h union pw int i; char ch2; a; main() a.ch0=13; a.ch1=0; printf(“%dn“,a.i); 程序的输出结果是 (注意:ch0在低字节, ch1在高字节 )( )。 ( A) 13 ( B) 14 ( C) 208 ( D) 209 29 若有以下说明和语句,则四个选项中是对 c数组元素的正确引用的是 ( )
15、。 int c45,(*cp)5; cp=c; ( A) cp+1 ( B) *(cp+3) ( C) *(cp+1)+3 ( D) *(*cp+2) 30 请读程序: #include stdio.h main() int a,b; for(a = 1,b = 1 ;a = 100;a+) if(b =20) break; if(b%3 =1) b +=3;continue; b-=5; printf(“%dn“,a); 上面程序的输出结果是 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 31 以下程序的输出结果是 ( )。 #include stdio.h main(
16、) int n=4; while(n-) printf(“%d “,-n); ( A) 2 0 ( B) 3 1 ( C) 3 2 1 ( D) 2 1 0 32 请选出可用作 C语言用户标识符的一组 ( )。 ( A) void define WORD ( B) a3_b3 _123 IF ( C) For _abc case ( D) 2a DO sizeof 33 请读程序: #include stdio.h #include string.h main() char *s1=“AbCdEf“, *s2=“aB“; s1+; s2+; printf(“%dn“,strcmp(s1,s2)
17、; 上面程序的输出结果是 ( )。 ( A)正数 ( B)负数 ( C)零 ( D)不确定的值 34 请选出以下程序的输出结果 ( )。 #include stdio.h #define MIN(x,y) (x y)? x:y main() int i,j,k; i=10;j=15; k=10*MIN(i,j); printf(“%dn“,k); ( A) 15 ( B) 100 ( C) 10 ( D) 150 35 若 x是 int型变量,且有下面的程序段: for(x=3;x 6;x+) printf(x%2)?(“*%d“):(“#%dn“),x); 此程序段的输出结果是 ( )。 (
18、 A) *3 #4 *5 ( B) #3 *4 #5 ( C) #3 *4#5 ( D) * 3#4 *5 36 若已定义: int a9,*p=a;并在以后的语句中未改变 p的值,下列 选项中不能表示 a1地址的表达式是 ( )。 ( A) p+1 ( B) a+1 ( C) a+ ( D) #NAME? 37 设有如下的程序段: char str=“Hello“; char *ptr; ptr=str; 执行完上面的程序段后, *(ptr+5)的值为 ( )。 ( A) o ( B) 0 ( C)不确定的值 ( D) o的地址 38 C语言中,下列叙述正确的是 ( )。 ( A)不能使用
19、do-while语句构成的循环 ( B) do-while语句构成的循环,必须用 break语句才能退出 ( C) do-while语句构成的循环,当 while语句中的表达式值为非零时结束循环 ( D) do-while语句构成的循环,当 while语句中的表达式值为零时结束循环 39 设有说明语句如下: static char str=“Beijing“; 若执行下列输出语句: printf(“%dn“,strlen(strcpy(str,“China“);则输出结果为 ( )。 ( A) 5 ( B) 7 ( C) 12 ( D) 14 40 以下程序的输出结果是 ( )。 #inclu
20、de stdio.h #include string.h main() char str12=s,t,r,i,n,g; printf(“%dn“,strlen(str) ); ( A) 6 ( B) 7 ( C) 11 ( D) 12 41 下列描述中不正确的是 ( )。 ( A)字符型数组中可以存放字符串 ( B)可以对字符型数组进行整体输入、输出 ( C)可以对整型数组进行整体输入、输出 ( D)不能在赋值语句中通过赋值运算符 “=”对字符型数组进行整体赋值 42 设有以下语句: char str412=“aaa“,“bbbb“,“ccccc“,“dddddd“,*strp4; int i
21、; for(i=0;i 4;i+) strpi=stri; 下列选项不是对字符正确引用的是 (其中 0k4)( )。 ( A) strp ( B) strkk ( C) * strpk ( D) * strp 43 请选出以下程序的输出结果 ( )。 #include stdio.h sub(int *s,int y) static int t=3; y=st;t-; main() int a=1,2,3,4,i,x=0; for(i=0;i4;i+) sub(a,x);printf(“%d“,x); printf(“n“); ( A) 1234 ( B) 4321 ( C) 0 ( D) 4
22、444 44 请读程序: #include stdio.h int a=2,4,6,8,; main() int i; int *p=a; for( i=0;i 4;i+) ai=*p+; priatf(“%dn“,a2); 上面程序的输出结果是 ( )。 ( A) 6 ( B) 8 ( C) 4 ( D) 2 45 若有以下的说明和语句,则在执行 for语句后, *(*(pt+1)+2)表示的数组元素是( )。 int t33,*Pt3,k; for(k=0;k 3;k+) ptk= ( A) t20 ( B) t22 ( C) t12 ( D) t21 46 读程序: #include s
23、tdio.h f(int b,int n) int i,r; r=1; for(i=0;i =n;i+) r=r*bi; return r; main() int x,a=2,3,4,5,6,7,8,9; x=f(a,3); printf(“%dn“,x); 上面程序的输出结果是 ( )。 ( A) 720 ( B) 120 ( C) 24 ( D) 6 47 读下面程序段 (字符串内没有空格字符 ): printf(“%dn“,strlen(“ATSn0121“);其输出结果是 ( )。 ( A) 11 ( B) 10 ( C) 9 ( D) 8 48 有以下程序: #include std
24、io.h main() int c; while(c=getchar() )! =n) switch(c-2) case 0: case 1: putchar(c+4); case 2:putehar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; 运行程序,从第一列开始输入以下数据: 2473回车则程序的输出结果是 ( )。 ( A) 668977 ( B) 668966 ( C) 66778777 ( D) 6688766 49 以下程序的输出结果是 ( )。 #include stdio.h main() int
25、a=-1,b=1,k; if(+a 0) else printf(“%d %dn“,b,a); ( A) -1 1 ( B) 0 1 ( C) 1 0 ( D) 0 0 50 下面程序的输出结果是 ( )。 #include stdio.h int m=13; int fun2(int x,int y) int m=3; return(x*y-m); main() int a=7,b=5; printf(“%dn“,fun2(a,b)/m); ( A) 1 ( B) 2 ( C) 7 ( D) 10 51 长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移
26、动元素的平均个数为【 】。 52 用树型结构表示实体类型及实体间联系的数据模型称为【 】。 53 类是一个支持集成的抽象数据类型,而对象是类的【 】。 54 数据流图的类型有【 】和事务型。 55 当数据的物理结构 (存储结构、存取方式等 )改变时,不影 响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【 】。 56 以下程序的运行结果是【 】。 #include stdio h #define MAX(a, b) (a b?a: b)+1 main() int i=6, j=8, k; printf(“%dn“, MAX(i, j); 57 在对文件操作的过程中,若要求文件的位置
27、指针回到文件的开始处,应当调用的函数是【 】。 58 在计算机中,字符的比较是对它们的【 】进行比较 。 59 在内存中,存储字符 x要占用 1个字节,存储字符串 “X“要占用【 】个字节。 60 下列程序的输出结果是 16.00,请填空。 #include stdio h main() int a=9, b=2; float x=【 】, y=1.1, z; z=a/2+b*x/y+1/2; printf(“%5.2fn“, z); 61 设在主函数中有以下定义和函数调用语句,且 fun函数为 void类型, 请写出fun函数的首部【 】。要求形参名为 b。 main() double s1
28、0 22; int n; fun(s); 62 下列程序的功能是输入一个整数,判断其是否是素数,若为素数则输出 1,否则输出 0。请填空。 #include stdio h main() int i, x, y=1; scanf(“%d“, int sign; for(; isspace(*s); s+); sign=(*s=-)? -1:1; if(*s=+|*s=-) s+; for(n=0; isdigit(*s); s+) n=10*n+( *s-0); return sign*n; 64 设有定义: structint a; float b; charc; abc; *p_abc=
29、charstr=“1234567“; for(i=0, j=strlen(str) 【 】 ;i j; i+, j-) k=stri; stri=strj; strj=k; printf(“%sn“, str); 67 以下程序可把输入的十进制数以十六进制数的形式输出,请填空。 #inelude stdio h main() ehar b17=“0123456789ABCDEF“; int c64, d, i=0, base=16; long n; printf(“Enter a number: n“); seanf(“%ld“, i+; n=n/base; while(n! =0); pri
30、ntf(“Transmite new base: n“); for(-i; i =0; -i) d=ci; printf(“%c“, b 【 】 ); printf(“n“); 国家二级( C语言)笔试模拟试卷 29答案与解析 1 【正确答案】 D 【试题解析】 计算机软件是包括程序、数据及相关文档的完整集合。它具有的特点有: 软件是一种逻辑实体,而不是物理实体,具有抽象性。 软件的生产过程与硬件不同,它没有明显的制作过程。 软件在运行、使用期间不存在磨损、老化问题。 软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致软件移植的问题。 软件复杂性高,成本昂贵。 软件开发涉及诸多
31、的社会因素。 2 【正确答案】 C 【试题解析】 层次模型是最早发展起来的数据库模型,其基本结构是树形结构。 3 【正确答案】 B 【试题解析】 栈是一种特殊的线性表,它只 能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,所以栈又称先进后出表。线性表可以顺序存储,也可以链式存储,而栈是一种线性表,也可以采用链式存储结构。 4 【正确答案】 B 【试题解析】 在长度为 n的线性表中进行顺序查找,如果表中第一个元素就是被查找元素,则只需做一次比较就查找成功,这是顺序查找的最好情况;如果被查找的元素是线性表中的
32、最后一个元素或者不在线性表中,则需要进行 n次比较,这是顺序查找的最坏情况。所以 选项 B)正确。 5 【正确答案】 D 【试题解析】 对于长度为。的线性表,在最坏情况下,冒泡排序需要经过次比较,快速排序的最坏情况比较次数也是 。 6 【正确答案】 C 【试题解析】 软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。总的来说,软件测试的目的就是尽可能多地发现程序中的错误。 7 【正确答案】 B 【试题解析】 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦
33、合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 8 【正确答案】 A 【试题解析】 在链式存储结构中,存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域确定的。 9 【正确答案】 D 【试题解析】 数据独立性是数据与程 序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。选项
34、 A)、 B)、 C)三种说法都是错误的。 10 【正确答案】 D 【试题解析】 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构 (也称数据的物理结构 )。 11 【正确答案】 D 【试题解析】 选项 D)中首先将 q赋给 r- next,也就是将结点 q的地址存放在结点 r的指针域中;接着将 r赋给 p- next,也就是将结点 r的地址存放在结点 p的指针域中, 此时完成了 q和 r所指结点的交换。 q- next=r- next的目的是想将 q的指针域指向下一个结点的数据地址,但由于一开始执行了 r- next=q,即已将 r的指针域甲存放了 q结点的地址,此时 q-nex
35、t=r- next就相当于将 q指向了其本身,也就是和下一个结点断开了,所以选项 D)错误。 12 【正确答案】 A 【试题解析】 int型变量和字符数组 ch共用两个字节的存储单元,通常 ch0位于低字节, ch1位于高字节,所以 s.ch0=21, s.c1=43。 13 【正确答案】 C 【试题解析】 选项 A)main();后面不应该有分号;选项 B)中的注释语句不正确;选项 D)的 include前缺少 #。 14 【正确答案】 C 【试题解析】 程序调用函数 fun2时,通过 fun2调用函数 fun1,第一次调用fun1返回的值为 1,然后将 1赋值给 a,由于 a为 doubl
36、e型,系统自动将 1转换为 1.000000赋给变量 a,以此类推可得 b的值为 4.000000;然后通过return(int)(a+b);将 a+b的值强制转换为 int型返给主函数,由于 w为 double型,所以返回的整型 值 5被转换为 double型,故输出结果为 5.0。 15 【正确答案】 D 【试题解析】 C语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存放,故选项 A)、 C)不是字符中;选项 B)定义的是一个字符变量 str,不能用来存放字符串,所以不正确。 16 【正确答案】 B 【试题解析】 选项 B)中行数定义为 2,但实际需要存放 3行元素,所以错
37、误。 17 【正确答案】 B 【试题解析】 gete()函数是从文件指针指定的文件中读入一个字符,并把它作为函数值返回; getchar()函数是从终端 (或系统隐含指定的输入设备 )输入一个字符,getc()和 getehar()都不能读字符串 (可以与循环语句结合输入一个字符串 ); seanf()函数不能输入带空格的字符串; gets()函数可以从键盘读入空格字符。 18 【正确答案】 D 【试题解析】 “%” 是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。 19 【正确答案】 A 【试题解析】 C语言的字符常量是用单引号括起来的一个字符,如 a, A,?, S等都是字符
38、常量。除此之外,还允许用一个 “”开头的字符序列,如 ddd表示 1到 3位八进制数所代表的字符,而八进制是由 0 7这几个数字组成的,所以选项 A)是不合法的字符常量。 20 【正确答案】 A 【试题解析】 C语言程序从 main函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用。若被调用函数定义在主调函数之后,则必须先声明后调用。在选项 A)中,先执行 main函数,并调用了 fun函数,而 fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以错误。 21 【正确答案】 D 【试题解析】 printf函数对不同类型的数据用不同的格式描述符, “%d” 是以带符号的十
39、进制形式输出整数 (正数不输出符号 ); “%o” 以八进制无符号形式输出整数 (不包括前导符 0); “%x” 以十六进制无符号形式输出整数 (不包括前导符 0x)。 22 【正确答案】 D 【试题解析】 C语言规定,分号是 C语句的必要组成部分,每个语句和数据定义的最后必须有一个分号。 23 【正确答案】 B 【试题解析】 定义一个结构体类型的变量,可采用三种方法: 先定义结构体类型,再定义变量名。 在定义类型的同时定义变量。 直接定义结构体类型变量,即不出现结构体名。 选项 B)符合第三种定义方法。 24 【正确答案】 C 【试题解析】 本题的考查点是通过指针引用数组元素。 i=0时,输
40、出 P0,也就是 x11,输出 5; i=2时,输出 p2,即 P2+0,也就是 x20,输出 3。 25 【正确答案】 B 【试题解析】 根据共用体的定义可知:共用体 z的成员 c和成员 i4是共用着同一段内存空间,所以,当程序给 z.i0赋值后,实际上共用体成员 c的值也确定了,为 0x39,所以在以字符 方式打印时,打印结果应是 ASCII码等于 0x39的字符,即是 9。 26 【正确答案】 A 【试题解析】 本题考查 int类型的范围问题。 C语言中 int类型的常数的范围是: -32768 32767。选项 A)超出了范围,错误。 C语言中整常数可用三种形式表示:十进制整数,八进制
41、整数,十六进制整数。 27 【正确答案】 B 【试题解析】 本题考查函数的递归调用。 fun函数共被调用 6次,即 fun(5)、fun(4)、 fun(3)、 fun(2)、 fun(1)、 fun(0),其中 fun(5)是 main函数调用的,其余是在 fun函数中调用的。 28 【正确答案】 A 【试题解析】 根据共用体的定义可知:共用体 a的成员 i和成员 ch2共用同一段内存空间,所以,当程序给 a.ch0和 a.ch1赋值后,实际上,共用体成员 i的值就确定为 13了,所以打印输出的结果应当为 13。 29 【正确答案】 D 【试题解析】 本题考查数组元素的引用。语句 cp=c;
42、将数组 c的首行地址赋给了指针数组 cp。选项 A)的 cp+1是指将数组 c的首行地址加 1,即为第二行地址;选项 B)的 *c(cp+3)是地址,等 于数组 c的首地址加 3的内存单元的内容,不是对数组元素的引用;选项 c)的 *(cp+1)+3是地址,等于数组 c的首地址加 1的内存单元中存放的值加 3,不是对数组元素的引用。 30 【正确答案】 B 【试题解析】 本题考查 break语句和 continue语句。程序要输出循环结束时循环变量 a的值,执行第一次循环时,条件 (b%3=1)为真, b=4,继续下一次循环,如此反复,当 b=22时,条件 (b =20)为真,跳出循环,此时共
43、循环 8次,即a=8。 31 【正确答案】 A 【试题解析】 n-是先 使用后自减, -n是先自减后使用。 n=4时,执行 n-后, n变为 3,执行 -n后, n变为 2,所以,第一次输出时, n为 2;同上过程,第二次输出时, n为 0。 32 【正确答案】 B 【试题解析】 C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。 A)中的 void与 C语言的关键字重名,不合法; C)中的 case和 C语言的关键字重名,不合法; D)中的 2a是数字开头,而且sizeof与 C语言的关键字重名,不合法。 33 【正确答案】 A 【试题解析】 本题考查
44、 字符串比较函数 strcmp()的应用。 strcmp(s1,s2)是中比较函数,当 s1 s2时返回值为正数,当 s1 s2时返回值为负数,当 s1=s2时返回值为零。本题中 s1, s2分别表示两个串中第一个字符的地址, s1+和 s2+是将指针指向串的第二个字符,指针变量 s1指向的是串 “bCdEf”的首地址,即字符 b的地址,而指针变量 s2指向的是字符 B的地址。而在字符串比较中,宁符串大小的确定是各个字符串相应位置字符的 ASCII码值的大小决定的,字符 B的 ASCII码值为 66,字符 “b”的 ASCII码值为 98,所以 s1 s2,返回值为正数。 34 【正确答案】
45、C 【试题解析】 本题考查宏定义。在 C语言中,宏是直接替换的,所以表达式k=10*MIN(i,j)被直接替换为 k=10*(i j)? i:j,在这个表达式中, 10*(i j)的值为非零,所以整个表达式的值应为 i的值,即为 10。 35 【正确答案】 D 【试题解析】 本题考查条件运算符。如果 x%2非 0,输出 *和循环变量的值;如果 x%2为 0,输出 #和循环变量的值。当循环变量为 3和 5时,分别输出 *3和*5,当循环变量为 4时,输出 #4后换行。 36 【正确答案】 C 【试题解析】 本题考查数组地址的表示。选项 C)中,数组名所表示的数组地址不能被重新赋值。 37 【正确答案】 B 【试题解析】 本题考查字符数组的结束标志。 ptr=str是将串 str的首地址赋给了指针变量 ptr,所以 ptr+5指向字符串 str的第六个数组元素,即是串的隐含结束标志 0, *(ptr+5)=0,最后的结果为 0。 38 【正确答案】 D 【试题解析】 本题考查 do-while语句。 C语言支持 do-while语句,选 项 A)错误; do-while构成的循环,当 while语句中的表达式值为零时结束循环,故选项B)、 C)都是错误的。 39 【正确答案】 A
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1