1、国家二级( C语言)笔试模拟试卷 127及答案与解析 1 下列对于线性链表的描述中正确的是 _。 ( A)存储空间不一定是连续,且各元素的存储顺序是任意的 ( B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面 ( C)存储空间必须连续,且各前件元素一定存储在后件元素的前面 ( D)存储空间必须连续,且各元素的存储顺序是任意的 2 下列关于栈的描述正确的是 _。 ( A)在栈中只能插入元素而不能删除元素 ( B)在栈中只能删除元素而不能插人元素 ( C)栈是特殊的线性表,只 能在一端插入或删除元素 ( D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素 3 为了使模块尽可能
2、独立,要求 _。 ( A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 ( B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 ( C)模块的内聚程度要尽量低,且各模块问的耦合程度要尽量弱 ( D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 4 下列叙述中,正确的是 _。 ( A)用 E-R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系 ( B)用 E-R图只能表示实体集之间一对一的联系 ( C)用 E-R图只能表示实体集之间一对多的联系 ( D)用 E-R图表示的概念数据模型只能转换为关系数据模型 5 以下叙述中正确的是 _。 ( A) C语言的源程序不
3、必通过编译就可以直接运行 ( B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令 ( C) C源程序经编译形成的二进制代码可以直接运行 ( D) C语言中的函数不可以单独进行编译 6 以下有 4组用户标识符,其中合法的一组是 _。 ( A) For -sub Case ( B) 4d DO Size ( C) f2_G3 IF abc ( D) WORD void define 7 以下选项中不属于 C语言的类型的是 _。 ( A) signed short int ( B) unsigned long int ( C) unsigned int ( D) long short 8
4、 有以下程序: int*f(int*x, int*y) if(*x *y) return x; else return y; main() int a=7,b=8,*P,*q,*r; P= printf(“%c,%c,%c,%cn“,a,b,c,d); 若运行时从键盘上输入: 6,5,65,66回车,则输出结果是 _。 ( A) 6,5,A,B ( B) 6,5,65,66 ( C) 6,5,6,5 ( D) 6,5,6,6 10 有以下程序: main() char str10=“China“,“Beijing“),*P=str; printf(“%sn“, p+10); 程序运行后的输出结
5、果是 _。 ( A) China ( B) Beijing ( C) ng ( D) ing 11 有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是 _。 ( A) a=a+b=b+ ( B) w%(int)a+b) ( C) (c+w)%(int)a ( D) w=a=b; 12 有以下程序: main() int i=1,j=1,k=2; if(j+k+) 以下叙述中正确的是 _。 ( A)程序输出大写字母 M ( B)程序输出小写字母 m ( C)格式说明符不足,编译出错 ( D)程序运行时产生出错信息 17 以下程序
6、的功能是进行位运算: main() unsigned chara,b; a=73;b= 4,以下 C语言表达式中与代数式 计算结果不相符的是 _。 ( A) (a十 B) *h/2 ( B) (1/2)*(a+B) *h ( C) (a+B) *h*1/2 ( D) h/2*(a+B) 19 若有以下程序段: int m=0,n=0; char c=a; scanf(“%d %c %d“, else printf(“%dn“,b); ( A) 2 ( B) 3 ( C) 5 ( D) 1 21 以下程序段中,能够通过调用函数 fun,使 main函数中的指针变量 p指向一个合法的整型单元的是
7、_。 ( A) main() int *p; fun(p); int fun(int *p) int s; p= ( B) main() int *p; fun( int fun(int *p) int s; *p= ( C) # include stdlib. h main() int *p; fun( int fun(int *p) *p=(int *)malloc(2); ( D) # include stdlib. h main() int *p; fun(p); int fun(int *p) p=(int *)malloc(sizeof(int); 22 有以下程序段: main(
8、) int a=5, *b, *c; c= b= 程序在执行了 c= b= 语句后,表达式 *c的值是 _。 ( A)变量 a的地址 ( B)变量 b中的值 ( C)变量 a中的值 ( D)变量 b的地址 23 有以下程序: main() int i=0, s=0; do if(i % 2) i+; continue; i+; s+=i; while(i 7); printf(“% dn“, s); 执行后的输出结果是 _。 ( A) 16 ( B) 12 ( C) 28 ( D) 21 24 以下能正确定义一维数组的选项是 _。 ( A) int a5=0, 1, 2, 3, 4, 5);
9、( B) char a=0, 1, 2, 3, 4, 5); ( C) char a=A, B, C; ( D) int a5=“0123“; 25 已有定义: char a=“xyz“b=x, y, z);,以下叙述中正确的是 _。 ( A)数组 a和 b的长度相同 ( B) a数组长度小于 b数组长度 ( C) a数组长度大于 b数组长度 ( D)上述说法都不对 26 有以下程序: main() char p=a, b, c, q=“abc“; printf(“% d % dn“, sizeof(p), sizeof(q); ; 程序运行后的输出结果是 _。 ( A) 4 4 ( B) 3
10、 3 ( C) 3 4 ( D) 4 3 27 若程序中定义了以下函数: double myadd(double a, double B) return(a+B) ; 并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是 _ ( A) double myadd(double a, B) ; ( B) double myadd(double, double); ( C) double myadd(double b, double A) ; ( D) double myadd(double x, double y); 28 以下程序的输出结果是 _。 int f() st
11、atic int i=0; int s=1; s+=i; i+; return s; main() int i, a=0; for(i=0; i 5; i+) a+=f(); printf(“% dn“, a); ( A) 20 ( B) 24 ( C) 25 ( D) 15 29 有以下程序: int f1(int x, int y) return x y? x:y; int f2(int x, int y) return x y? y:x; main() int a=4, b=3, c=5, d=2, e, f, g; e=f2(f1(a, b), f1(c, d); f=f1(f2(a,
12、 b) , f2(c, d); g=a+b+c+d-e-f; printf(“% d, %d, %dn“, e, f, g); 程序运行后的输出结果是 _。 ( A) 4, 3, 7 ( B) 3, 4, 7 ( C) 5, 2, 7 ( D) 2, 5, 7 30 有以下程序: # define N 20 fun(int a, int n, int m) int i, j; for(i=m; i=n; i-)ai+1=ai; main() int i, aN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; fun(a, 2, 9); for(i=0; i 5; i+)print
13、f(“% d“, ai); 程序运行后的输出结果是 _。 ( A) 10234 ( B) 12344 ( C) 12334 ( D) 12234 31 在函数调用过程中,如果函数 funA调用了函数 funB,函数 funB又调用了函数funA,则 _。 ( A)称为函数的直接递归调用 ( B)称为函数的间接递归调用 ( C)称为函数的循环调用 ( D) C语言中不允许这样的递归调用 32 有以下函数定义: void fun(int n, double x) 若以下选项中的变量都已经正确定义并赋值,则对函数 fun的正确调用语句是 _。 ( A) fun(int y, double m); (
14、 B) k=fun(10, 12.5); ( C) fun(x, n); ( D) void fun(n, x); 33 执行下列程序时输入: 123空格 456空格 789回车,输出结果是_。 mein() char s100; int c, i; scanf(“% c“, scanf(“% d“, scanf(“% s“, s); printf(“% c, % d, % sn“, c, i, s); ( A) 123, 456, 789 ( B) 1, 456, 789 ( C) 1, 23, 456, 789 ( D) 1, 23, 456 34 在 C语言中,形参的默认存储类型是 _。
15、 ( A) auto ( B) register ( C) static ( D) extern 35 以下只有在使用时才为该类型变量分配内存的存储类说明是 _。 ( A) auto和 static ( B) auto和 register ( C) register和 static ( D) extern和 register 36 有以下程序: matin() char * s=“one“, “two“, “three“, *p; p=s1; printf(“% c, % sn“, *(p+1),s o); 执行后的输出结果是 _。 ( A) n, two ( B) t, one ( C) w
16、, one ( D) o, two 37 有以下程序: int a=2; int f(int n) static int a=3; int t=0; if(n % 2)(static int a=4; t+=a+; elsestatic int a=5; t+=a+; return t+a+; matin() int s=a, i; for(i=0; i 3; i+)s+=f(i); printf(“% dn“, s); 程序运行后的输出结果是 _。 ( A) 26 ( B) 28 ( C) 29 ( D) 24 38 以下叙述中正确的是 _。 ( A)局部变量说明为 static存储类,其生
17、存期将得到延长 ( B)全局变量说明为 static存储类,其作用域将被扩大 ( C)任何存储类的变量在未赋初值时,其值 都是不确定的 ( D)形参可以使用的存储类说明符与局部变量完全相同 39 以下叙述中正确的是 _。 ( A)预处理命令行必须位于源文件的开头 ( B)在源文件的一行上可以有多条预处理命令 ( C)宏名必须用大写字母表示 ( D)宏替换不占用程序的运行时间 40 有以下程序: # include stdio. h # difine F(X, Y) (X)*(Y) main() int a=3, b=4; print(“% dn“, F(a+, b+); 程序运行后的输出结果是
18、_。 ( A) 12 ( B) 15 ( C) 16 ( D) 20 41 对于长度为 n的顺序存储的线性表,当随机插入和删除 个元素时,需平均移动元素的个数为【 】。 42 注释说明了程序的功 能,它分为【 】注释和功能性注释。 43 软件测试中路径覆盖测试是整个测试的基础,它是对软件【 】进行测试。 44 数据库技术的主要特点为数据的集成性、数据的高【 】和低冗余性、数据独立性和数据统 管理与控制。 45 数据元素之间【 】的整体称为逻辑结构。 46 设 Y是 int型变量,请写出判断 Y为奇数的关系表达式【 】。 47 以下程序的输出是【 】。 main() char str1=How
19、do you do“, *p=strl; strcpy(str1+strlen(str1)2“es she“); pfinff(“%sn“,p1); 48 以下程序输出的最后个值是【 】 int ff(int n) static int f=1; f=f*n return f; main() int i; for(i=1;i =5:i+) printf(“%d、 n“,ff(i); 49 下列程序的输出结果是【 】。 main() int a=2,4,6,*prt= for(y=0;y 3;y+) z=(*(ptr+y x)?*(ptr+y):x; printf(“%dn“,z); 50 若有
20、定义语句 char s100,d100;int j=0,i=0;且 s中已赋字符串,请填空以实现拷贝。 (注:不使用逗号表达式 ) whi1e()si)dj=【 】 :j+; dj=0; 51 若有如下结构体说明: struct STRU int a,b;charc:double d; struct STRU*p1,*p2; 请填空,以完成对 t数组的定义, t数组的每个元素为该结构体类型。【 】t20 52 以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用 ftell函数返回当前文件位置指针的具体位置,从而确定文件长度, 请填空。 FILE*myf; lon
21、gfl; myf=【 】 (“test.t“,“rb“); fseek(myf,(),SEEK_END) fl+ftell(myf); fclose(myf); printf(“%ldn“,fl); 国家二级( C语言)笔试模拟试卷 127答案与解析 1 【正确答案】 A 【试题解析】 线性链表属于链式存储结构,在链式存储结构中,存储空间可以不连续,各元素的存储顺序是任意的,元素之间的逻辑关系是由指针域 来决定的。 2 【正确答案】 C 【试题解析】 栈是特殊的线性表,它的一端封闭,在另一端进行插入和删除操作。 3 【正确答案】 B 【试题解析】 为了使模块尽可能独立,模块分解时应满足信息隐蔽
22、原则。尽量使模块的内聚度高,模块间的耦合度低。模块的大小适中 (通常一个模块以 50 100个语句行最为适宜 )。 4 【正确答案】 A 【试题解析】 E-R模型可以用一种非常直观的图的形式表示,这种图称为 E-R图。用 E-R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系。 5 【正确答案】 B 【试题解析】 C语言编写的程序必须经过编译、连接后才可以执行,选项 A错误; C语言编译后生成的二进制代码是目标文件,需进一步连接生成 .exe文件方可执行,选项 C错误; C语言中函数可以单独编译。 6 【正确答案】 C 【试题解析】 选项 A中有非法标识符 -sub,选项 B中有非
23、法标识符 4d,选项 D中有 C语言保留字 void。 7 【正确答案】 D 【试题解析】 本题考查 C语言中整型变量的分类问题,选项 D不是 C语言合法的数据类型。 8 【正确答案】 B 【试题解析】 函数 f是一个返回值为指针的函数,其功能是比较两个数中的最小值,并返回最小值的存储单元地址。 main函数中定义了指针变量 p和 q,p=j先加 1得 2,然后输出。 15 【正确答案】 A 【试题解析】 B选项中 32应加单引号, C选项中 f=f+1.1两边都是不定值,不正确; D中 E后要用整型数,且 E后必须要有数字。 16 【正确答案】 B 【试题解析】 输出项表是一个逗号表达式,它
24、的值为 a2,因此输出的是 a2的值。 17 【正确答案】 A 【试题解析】 a 73=0000011100000011=00000100=4; b= 4,因此可得答案为 How does she。 48 【正确答案】 120 【试题解析】 静态变量的类型说明符是 static,静态局部变量属于静态存储方式,它具有以下特点: 静态变量的类型说明符是 static,静态局部变量属于静态存储方式,它具有以下特点: 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。 对静态局部变量是在编译时赋初值的,即只赋初值 次,在程序运行时它已有初值。以后每次调用函数时不再重
25、新赋初值而只是保留上次函数调用结束时的值。 如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值 0(对数值 型变量 )或空字符 (对字符变量 )。 (注意: C语言中非静态变量在定义时,系统并不会自动给它赋初值 ) 虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。本题中函数的功能是:与 for语句一起求一个整数的阶乘。 49 【正确答案】 6 【试题解析】 条件运算符的优先级高于赋值运算符,因此本题先计算关系个表达式 (*ptr+y) x)?(ptr+y):x的值,再赋绐变量 z,当 y=O时, *(ptr+y)=2,而 x=8,(*(ptr+y) x)
26、条件为真,则整个条件表达式的值为 *(pry)=2,所以 z=2;当 y=1时*(ptr+y)=4, (*(ptr+y) x)条件为真,则整个条件表达式的值为 *(ptr+y)=4,所以z=4;当 y=2时, *(ptr+y)=6, *(ptr+y) x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以 z=6;循环结束。因此输出 z的结果为 6。 50 【正确答案】 si+ 【试题解析】 本题中为了能实现字符串的拷贝,需要使字符数组 s从头到尾依次遍历其所有元素。本题应使用 i的自增后置来实现。 51 【正确答案】 stmctSTRU 【试题解析】 结构件类型是构造数据类型,是用户自己定义的 种类型。结构件类型的定义: struct结构体类型名 成员项表; 定义结构伸变量的的形式为:struct结构体类型名变量 1,变量 2, 其中变量包括; 般变量、指针变量、数组变量等。 52 【正确答案】 fopen 【试题解析】 C语言中的文件分为: ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为: fopen(),调用形式为: fp=fopen(“文件名“,“使用文件方式 “);关闭文件的函数为: fclose(),调用形式为: fclose(fp),其中 fp为文件指针。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1