1、国家二级( C语言)笔试模拟试卷 265 及答案与解析 1 下列特征中不是面向对象方法的主要特征的是 ( )。 ( A)多态性 ( B)继承 ( C)封装性 ( D)模块化 2 下列叙述中正确的是 ( )。 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结构 ( C)双向链表是非线性结构 ( D)只有根节点的二叉树是线性结构 3 下面的叙述正确的是 ( )。 ( A)程序设计就是编制程序 ( B)程序的测试必须由程序员自己去完成 ( C) 程序经份试改错后还应进行再测试 ( D)程序经调试改错后不必进行再测试 4 在结构化方法中,软件功能分解属于软件开发中的 ( )阶段。 (
2、 A)详细设计 ( B)需求分析 ( C)总体设计 ( D)编程调试 5 SA方法是一种 _。 ( A)自顶向下逐层分解的分析方法 ( B)自底向上逐层分解的分析方法 ( C)面向对象的分析方法 ( D)上述都不对 6 软件危机是指 _。 ( A)软件开发和软件维护中出现的一系列问题 ( B)计算机出现病毒 ( C)软件的版权得不到法律应有 的保护 ( D)以上都不正确 7 在关系数据库中,用来表示实体之间联系的是 ( )。 ( A)树结构 ( B)网结构 ( C)线性表 ( D)二维表 8 数据库系统的核心是 _。 ( A)数据模型 ( B) DBMS ( C)软件工具 ( D)数据库 9
3、数据存储和数据流都是 _,仅仅是所处的状态不同。 ( A)分析结果 ( B)事件 ( C)动作 ( D)数据 10 视图设计一般有 3种设计次序,下列不属于视图设计的是 _。 ( A)自顶向下 ( B)由外 向内 ( C)由内向外 ( D)自底向上 11 以下程序的输出结果是 ( )。 main() int a=4,b=3,c=2,d=1; printf(“ d”, ab?a: dc?d: b); ( A) 1 ( B) 3 ( C) 2 ( D) 4 12 在 C语言中,变量的隐含存储类别是 ( )。 ( A) auto ( B) static ( C) extern ( D)无存储类别 1
4、3 以下程序的输出结果是 _。 main() int a=3; printf(“%dn“,(a+=a-+a*a) ) ( A) -6 ( B) 1 ( C) 2 ( D) -12 14 有定义语句: int x,y;,若要通过 scanf(“%d,%d“, scanf(“%s%s”,a,b); gets(c); printf(“%s%s%sn”,a,b,c); 程序运行时从第一列开始输入 :This is a cat! 则输出结果是 ( A) Thisisacat! ( B) Thisis a ( C) Thisisa cat ( D) Thisis a cat! 17 以下函数不能用于向文件
5、中写入数据的是 ( A) fwrite ( B) fputc ( C) flell ( D) fprintf 18 有以下程序: #include stdio.h struct s int x,y; data2=10,100,20,200; main() struct s *p=data; printf(“%dn“,+(p- x); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 11 ( C) 20 ( D) 21 19 下列程序的输出结果是 _。 main() int i; for(i=0; i 2; i+) add(); add() int x=0; static int y
6、=0; printf(“%d, %dn“, x, y); x+;y=y+2; ( A) 0,0 0,0 ( B) 0,0 0,2 ( C) 0,0 1,0 ( D) 0,0 1,2 20 与数学式子 应的 C语言表达式是 ( A) 3*xn/(2*x-1) ( B) 3*x*n/(2*x-1) ( C) 3*pow(x, n)*(1/(2*x-1) ( D) 3*pow(n, x)/(2*x-1) 21 以下程序段中与语句 k=a b?(b c?1: 0): 0;功能等价的是 _。 ( A) if(a B) int name; st,*p; p= ( A) st.i ( B) *p.i ( C
7、) (*p).i ( D) p- i 23 已知 int a=1,b=3则 a b的值为 ( A) 3 ( B) 1 ( C) 2 ( D) 4 24 下列能正确进行字符串赋值的是 ( )。 ( A) chars5 “ABCDE“; ( B) char s5+A,B,C,D,E), ( C) char*s;s “ABCDE“; ( D) char*s;printf(“%SS); 25 下列叙述中正确的是 ( )。 ( A)用 ER图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系 ( B)用 ER图 只能表示实体集之间一对一的联系 ( C)用 ER图只能表示实体集之间一对多的联系 (
8、 D)用 ER图表示的概念数据模型只能转换为关系数据模型 26 下列程序执行后的输出结果是 _。 ( A) hello ( B) hel ( C) hlo ( D) hlm void func1 (int i); void func2 (int i); char st=“hello,friend!“; void func1(int i) printf(“%c“, sti); if(i3) i+=2; func2(i); void func2 (int i) printf(“ c“, sti); if(i 3) i+=2; func1(i); main() int i=0; func1(i);
9、printf(“n“); 27 以下程序的输出结果是 _。 main() int i: for(i=A; i i; i+, i+) printf(“%c“, i+32): printf(“n“); ( A) acfg ( B) bcfg ( C) acef ( D) aceg 28 下面的程序输出结果是 _。 main() int x=3; while(!(-x) printf(“%dn“,x-=2); ( A)不执行循环体 ( B) 1 ( C) 0 ( D)是死循环 29 下列程序执行后的输出结果是 main() int a33, *p,i; p= for(i=1; i void YesN
10、o(char ch) switch(ch) casey: caseY: printf(“nThis is YES.n“); case n: case N: printf(“nThis is NO.n“); main() char ch; printf(“nEnter a char y,Y or n,N:“); ch=【 】 ; printf(“ ch;%c“ ,ch); YesNo(ch); 50 下列程序的运行结果是 _。 main() int a=1, b=10; do b-=a; a+while(b- 0); printf(“ d, d n“, a, b); 51 以下程序运行后的输出结
11、果是 _。 int a=5; fun (int B) static int a=10; a+=b+; printf(“%d“, A) ; main() int c=20; fun(C) , a+=C+; printf(“%dn“, A) ; 52 以下程序用于判断 a、 b、 c能否构成三角形,若能,输出 YES,否则输出NO。当给 a、 b、 c输入三角形三条边长时,确定 a、 b、 c能构成三角形的条件是需同时满足三个条件: a+b c, a+c b, b+c a。 请填空。 main() float a,b,c; scanf(“%f%f%f“, if(【 】 ) printf(“YESn
12、“); /*a、 b、 c能构成三角形 */ else printf(“NOn“); /*a、 b、 c不能构成三角形 */ 53 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 【 】 (double,double); main() double x,y; scanf(“%1f%1f“, printf(“%1fn“,max(x,y); double max(double a,double B) return(a b ? a:b); 54 表达式 8/4*(int)2.5/(int)(1.25*(3.7+2.3)的值是 _。 55 以下程序中, fun函数的功能是求 3行 4列二
13、维数组每行元素中的最大值。请填空。 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(i=0;i 3;i+)printf(“%4d“,bi); printf(“n“); void fun(int m, int n, int ar4, int *br) int i,j,x; for(i=0;i m;i+) x=ari0; for(j=0;j n;j+)if(x arij)x=arij; 【 】 =x;
14、56 设有如下程序: main() int n1,n2; scanf(“%d“, ”语句连续输入两个字符串 ,用空格隔开 ,所以字符数组 a为 “This”,数组 b 为 “is”。 gets()函数接收字符串的输入 ,以回车表示输入的结束 ,所以字符数组 c为 “空格 a空格 cat!”。 17 【正确答案】 C 【试题解析】 fwrite函数的功能是将一组数据写到磁盘文件上 ;fpute函数的功能是把一个字符写到磁盘文件上 ;fprintf 函数的功能是格式化向磁盘文件写数据 :ftell函数的作用是得到流式文件中的当前位置。 18 【正确答案】 B 【试题解析】 本题考查对外部存储类型的
15、结构体变量进行初始化。初始化后,data0x的值为 10, data0y的值为 100。输出 +(p- x)时, +(p- x)就相当于+data0.x,这时 data0.x先自增,再使用,所以输出 11。 19 【正确答案】 B 20 【正确答案】 C 【试题解析】 在该题中, x的 n次方应该调用函数 pow(x, n)计算, pow(x, n)的参数写反了。 21 【正确答案】 A 【试题解析】 “a b?(b c?1: 0): 0”的求解顺序是:先判断 a b是否为真,如果为真,则执行 b c?1: 0,如果 b c为真,则 (b c?1: 0)的值为 1,从而整个表达式返回 1,否则
16、整个表达式返回 0;如果 a仁 b,则表达式返回 0。因此功能等价的语句应为 if(a b)&(b c)k=1; else k=0;。 22 【正确答案】 B 【试题解析】 本题主要考查结构指针: p=&st,访问结构体的成员,可以通过结构变量访问,即 st.1,也可以用等价的指针形式,即 (*p).i和 p- i。 23 【正确答案】 C 【试题解析】 是按位异或运算,如果对应位不同则结果为 1,相同则为 0。 24 【正确答案】 C 【试题解析】 字符串存 储要有结束符 “0”且要占用一个空间,选项 A)、 B)的空间不够; printf用来输出字符,不能输入字符串。 25 【正确答案】
17、A 【试题解析】 用 E-R图可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系,用 E-R图表示的概念敛据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。所以 A的说法正确。 26 【正确答案】 C 27 【正确答案】 D 28 【正确答案】 A 29 【正确答案】 B 【试题解析 】 本题中 ,a12是二维数组中的第 6个元素 ,对应 for循环中 i的值为5,p5=5+1。 30 【正确答案】 D 【试题解析】 本题考查链表的数据结构,必须利用指针变量才能实现。 b和 c是变量,选项 A) 错误; p 是指针变量,
18、选项 B) 表达错误;选项 C) 的赋值 /顷序错误。 31 【正确答案】 D 【试题解析】 函数 fopen(const char *filename,constchar*mode)的功能是以 mode指定的模式打开 filename指定的磁盘文件: fclose(FILE*fp)的功能是关闭文件指针 fp指向的文件; 函数 fscanf(FILE*fp, const chat*format1,address,-)的功能是根据 format中的格式从中指向的文件中读取数据,并存入到相应的 address 指向的变量中函数 fprintf(FILE*fp,const char*format,a
19、rgument-)的功能是把argument列表中的表达式值写到 fp所指向的文件中;函数 fwfite(void*ptr,int size, int n,FILE*fp)的功能是把 ptr指向的缓冲区中的 sizen 个字节写到文件指针fp指向的文件中。本题中首先定义了一个文件指针 fp,然后通过函数 fopen 以可“wb“的方式打开文件 “data.daft“,直接通过一个 for循环,每循环一次调用函数fwrite将数组中的元素 ai的值写进 fp所指的文件中,该循环共循环 4次,循环完后 fp所指文件的内容为 123,然后通过 fclose函数关闭 fp所指文件接着通过函数 fope
20、n 以 “rb”的方式打开文件 “data.dat“,通过 fseek 函数让指针中从文件末尾向前移动 2个 int型大小字节的,然后 通过函数 fread 从中所指的文件中读取一个int型大小的数据到变量 b 中,故此时 b的值为 3,因此最后输出的, b 的值为 3,所以, 4个选项中选项 D符合题意。 32 【正确答案】 B 【试题解析】 因为整个逗号表达式的值为逗号表达式最后一个子表达式的值,所以本题输出的是 a2的值 m。故应该选择 B。 33 【正确答案】 D 34 【正确答案】 B 【试题解析】 C语言规定,实参变量对形参变量的数据传递是 “单向值传递 ”,只由实参传给形参。在内
21、存中,实参单元与形参单元是不同的单元。调用结束后,实 参单元仍保留并维持原值。 35 【正确答案】 B 【试题解析】 C语言规定标识符只能由字母、数字和下划线 3种字符组成,且第一个字符必须为字母或下划线,所以排除 C和 D。 C语言还规定标识符不能为 C语言的关键字,从而选项 A(void 是关键字 )是错误的。 36 【正确答案】 D 【试题解析】 顺序文件只能从头读写;二进制文件可以随机读写;文件在使用后应关闭,当程序结束时,应当把打开的文件关闭;用 fread()函数可以一次性地读取同类型的很多数据;在 C语言中指向各种文件的文件指针都是通过 FILE 来 定义的。 37 【正确答案】
22、 B 【试题解析】 选项 A的错误在于,先已经把 q 结点给释放,无法再进行余下语句了;选项 C和 D的错误在于因为有了 q=(*q).next做了赋值,则 free(q)释放了原来 q后面的一个结点。 38 【正确答案】 B 39 【正确答案】 C 40 【正确答案】 C 【试题解析】 本题考查的是 scanf函数格式的说明, s代表输入一个字符数组,而不是地址,因此,选项 C不符合题意。 41 【正确答案】 A 【试题解析】 此题考核的是文件的读写,定义一个 FILE 类型结构体的指针 fp,以 “只写 ”方式打开 个 test.txt文件,并向文件输入指针变量 s1指向的 7个字符,则文
23、件内的内容为 “Fortran”,执行 fseek 函数文件位置指针移到文件的开头,再次向文件输入指针变量 s2指向的 5个字符,虽然此时的文件前 5个字符字符已被“Forta”所占用,但当向文件输入 “Basic”这五个字符时,系统会覆盖原有的内容“Forta”,所以最后 test.txt里的内容为: Basican。 42 【正确答案】 n2+1 43 【正确答案】 结构 【试题解析】 路径测 试是白盒测试方法中的一种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。 44 【正确答案】 对象 【试题解析】 在而向对象的程序设计中,类是具有共同属性、共同方法的对象的集合,
24、即类描述的是具有相似性质的一组对象。 45 【正确答案】 投影 【试题解析】 关系数据库管理系统的专门关系运算包括选择、连接和投影。选择运算在指定的关系中选取所有满足给定条件的元组,构成一个新关系;投影运算在给定关系的某些域上进行;连接运算是从两个关系的笛卡尔积中选出满足给定属性间一定条件的元 组。 46 【正确答案】 中序 【试题解析】 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前序遍历是指在访问根结点、遍历左子树与遍历右子构这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树
25、,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序 遍历指在访问根结点、遍历左子树与遍历右子捌这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。 47 【正确答案】 62 【试题解析】 本题考查的是宏定义。带参数的宏定义是按 #indefine命令行中指定的字符串从左到右进行转换。本题中替换的式子为: 6+8*6+8,代入 i, j的值得到 62。 48 【正确答案】
26、类 【试题解析】 将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同操作性质的对象的集合 ,是已经定义了的关于对象的特征、外观和行为的模板。所以类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其划应类的一个实例。 49 【正确答案】 getchar 【试题解析】 考查了字符可以作为整型变量来对待 ,参与操作。题中要求根据输入的字符调用函数 YesNo来判断输入的字符是 y(Y)还是 n(N),字符的输入可用字符输入函数 getchar。函数 YesNo用来判断一个字符是 y(Y)还是 n(N),主要用了一个switch 多分支结构来比较输入字符与字符 、 ,n
27、,N是否相等来实现的。 50 【正确答案】 2, 8。 【试题解析】 本题考查 dowhile语句的功能:先执行循环俸,再判断循环条件是否成立,若为真,则重复执行循环体,否则退出循环。程序开始时 a=1,b=10,经过操作 b-=a; a+后 b=9, a=2,判断条件 b- 0不成立,则退出循环,但 b 的菹被减 1,因此结果为 a=2, b=8。 51 【正确答案】 30 25 【试题解析】 本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所 有函数之外的变量,本题中 int a=5定义了一个外部变量 a,它是一个全局变量,即作用域
28、是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数 fun()中 static int a=10定义个一个静态变量 a,此静态变量 a是个静态的局部变量,即它的值只能在本函数中使用; 自动变量是 C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的, auto是自动变量的存储类别标识符,如果省略 auto,系统隐含认为此变量为 auto,本题中 main()中 int c=20 定义了一个自动变量 c,此自动变量 c是个静态的局部变量算术运算中 a+=b+相当于 a=a+b, b=b+1所以,在第一个 ptine
29、(“ d“, a)中 a=a+b=10+20=30, 第二个 printf(“ d“, a)中 a=a+c=5+20=25,即输出 30 25。 52 【正确答案】 a+b c & a+c b & b+c a 【试题解析】 在逻辑表达式中,如果要同时满足几个条件可以使用逻辑与运算符“&”,故本题的答案应该为: a+b c & a+c b & b+c a或其他等价形式。 53 【正确答案】 double max 或 extern double max 【试题解析】 本题中 main()函数需要调用 max()函数,在 main()之前就需要声明函数 max(),并且可以用 extern 说明符使
30、变量的作用域扩充到需要用到它的函数,所以,填写 double max(或 extern double max)。 54 【正确答案】 0。 【试题解析】 表达式中将实型常量 2.5和算术表达式 1.25*(3.7+2.3)的值强制转换为整型后参与运算。 55 【正确答案】 bri 【试题解析】 fun()函数中外层循环控制求最大元素的行数,在第 i行中先假定第一个元素为最大值,然后将后面的元素和这个最大元素进行比较,将最大元素存于变量 x中,最后再将 x赋给 bri,通过指针参数使 bi中存放的第 i行元素的最大值。 56 【正确答案】 8921 【试题解析】 本题的程序的功能是将输入的整数反向输出。 57 【正确答案】 -1 【试题解析】 strcmp(s1, s2)函数的作用是:对字符数组 s2和字符数组 s1进行比较。如果 s1 s2,则返回负数;如果 s1=s2,则返回 0;如果 s1 s2,则返回正数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1