1、国家二级( C语言)笔试模拟试卷 175及答案与解析 1 下面叙述正确的是 ( A)算法的执行效率与数据的存储结构无关 ( B)算法的空间复杂度是指算法程序中指令 (或语句 )的条数 ( C)算法的有穷性是指算法必须能在执行有限个步骤之后终止 ( D)以上三种描述都不对 2 下列数据结构中,按先进后出原则组织数据的是 ( A)线性链表 ( B)栈 ( C)循环链表 ( D)顺序表 3 在下列关于二叉树的叙述中,正确的一项是 ( A)在二叉树中,任何一个结点的度 都是 2 ( B)二叉树的度为 2 ( C)在二叉树中至少有一个结点的度是 2 ( D)一棵二叉树的度可以小于 2 4 结构化程序设计
2、方法的 3种基本控制结构中不包括 ( A)循环结构 ( B)递归结构 ( C)顺序结构 ( D)选择结构 5 下列叙述中正确的是 ( A)在面向对象的程序设计中,各个对象之间具有密切的联系 ( B)在面向对象的程序设计中,各个对象都是公用的 ( C)在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 ( D)上述三种说法都不对 6 软件工程的出现是由于 ( A)程序设计方法学的影响 ( B)软件产业化的需要 ( C)软件危机的出现 ( D)计算机的发展 7 下列对于软件测试的描述中正确的是 ( A)软件测试的目的是证明程序是否正确 ( B)软件测试的目的是使程序运行结果正确 ( C)软
3、件测试的目的是尽可能多地发现程序中的错误 ( D)软件测试的目的是使程序符合结构化原则 8 在数据管理技术的发展过程中,可实现数据共享的是 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D)系统管理阶段 9 有三个关系 R、 S和 T如下: 由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( A)并 ( B)自然连接 ( C)笛卡尔积 ( D)交 10 数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和 ( A)编码设计 ( B)测试阶段 ( C)运行阶段 ( D)物理设计 11 以下叙述中正确的是 ( A) C程序中的注释只能出现在程序的开始位置和语句的
4、后面 ( B) C程序书写格式严格,要求 一行内只能写一个语句 ( C) C程序书写格式自由,一个语句可以写在多行上 ( D)用 C语言编写的程序只能放在一个程序文件中 12 以下选项中不合法的标识符是 ( A) ptint ( B) FOR ( C) &a ( D) _00 13 以下合法的十六进制数是 ( A) 0x ( B) 0x4de ( C) 0x1h ( D) oX77 14 x, y, z被定义为 int型变量,若从键盘给 x, y, z输入数据,正确的输入语句是 ( A) INPUTx、 y、 z; ( B) scanf(“%d%d%d“, &x, &y, &z); ( C)
5、scanf(“%d%d%d“, x, y, z); ( D) read(“%d%d%d“, &x, &y, &z); 15 以下定义语句中正确的是 ( A) int a=b=0; ( B) char A=65+1, b=b; ( C) float a=1, *b=&a, *c=&b; ( D) double a=0.0; b=1.1; 16 有以下程序段 char ch; int k; ch=a; k=12; printf(“%c, %d, “,ch, ch, k); printf(“k=%dn“, k); 已知字符 a的 ASCII码值为 97,则执行上述程序段后输出结果是 ( A)因变量类
6、型与格式描述符的类型不匹配,输出无定值 ( B)输出项与格式描述符个数不符,输出为零值或不定值 ( C) a, 97, 12k=12 ( D) a, 97, k=12 17 能正确表示逻辑关系: “a10或 a0”的 C语言表达式是 ( A) a =10 or a =0 ( B) a =0|a =10 ( C) a =10&a =0 ( D) a =10a =0 18 请阅读以下程序: #include stdio.h main() int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case 0: a+; break; case 2: a+
7、,b+; break; printf(“a=%d, b=%dn“, a, b); 上面程序的输出结果是 ( A) a=2, b=1 ( B) a=1, b=1 ( C) a=1, b=0 ( D) a=2, b=2 19 以下叙述正确的是 ( A) continue语句的作用是结束整个循环的执行 ( B)只能在循环体内和 swish语句体内使用 break语句 ( C)在循环体内使用 break语句或 continue语句的作用相同 ( D)从多层循环嵌套中退出时,只能使用 goto语句 20 执行下面的程序后, a的值为 main() int a, b; for(a=1, b=1; a =1
8、0;a+) if(b%3=1) b+=3; continue; b-=5; ( A) 7 ( B) 8 ( C) 9 ( D) 10 21 下面程序中有错误的行是 (每行程序前面的数字表示行号 ) 1 main() 2 3 int a3=1; 4 int i; 5 scanf(“%d“, &a); 6 for(i-1; i 3;i+)a0=a0+ai; 7 printf(“a0=%dn , “a0); 8 ( A) 3 ( B) 6 ( C) 7 ( D) 5 22 以下程序的输出结果是 #include stdio.h infun(int n, int *s) int n, f2; if(n
9、=0n=1) *s=1; else fun(n-1, &f1); fun(n-2, &f2); *s=f1+f2; void main() int x; fun(6, &x); pfintf(“n%d“, x); ( A) 7 ( B) 13 ( C) 9 ( D) 10 23 主程序调用 findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是 #include stdio.h findmax(int*s, int t, int*k) int p; for(p=0,*k=p; p t; p+)if(sp s*k)( ); main() int a10, i, k; for(i
10、=0; i10; i+)scanf(“%d“, &ai); findmax(a, 10, &k); printf(“ ( A) k=p ( B) *k=p ( C) k=p-s ( D) *k=p-s 24 定义如下变量和数组: int i; int x33=1, 2, 3, 4, 5, 6, 7, 8, 9; 则下面语句的输出结果是 ( )。 for(i=0; i 3; i+) printf(“%d“, xi2-i); ( A) 1 5 9 ( B) 1 4 7 ( C) 3 5 7 ( D) 3 6 9 25 以下正确的程序段是 ( A) cgar str20; scanf(“%s“, &
11、str); ( B) char *p; scanf(“%s“, p); ( C) cha str20; scanf(“%s“, &str2) ( D) char str20, *p=str; scanf(“%s“, p2); 26 阅读下面程序段,则执行后的结 果为 #inclide“stdio.h“ main() int m=4,n=2, k; k=fun(m, n); printf(“%dn“, k); fun(int m, int n) return(m*m*m-n*n*n); ( A) 64 ( B) 8 ( C) 56 ( D) 0 27 下面程序的运行结果是 #include st
12、dio.h main() static char a=“Languagef“ , b=“programe“; char *p1, *p2; int k; p1=a; p2=b; for(k=0; k =7; k+) if(*(p1+k)=*(p2+k) printf(“%c“, *(p1+k); ( A) gae ( B) ga ( C) LanSuage ( D)有语法错 28 下面程序的运行结果是 #include stdio.h void delch(char *s) int i, j; char *a; a=S; for(i=0, j=0; ai!=0; i+) if(ai =0 &a
13、ai =9) sj=ai; j+; sj=0; main() char *item=“a34bC“; delch(item); printf(“ ( A) abc ( B) 34 ( C) a34 ( D) a34bc 29 设已执行预编译命令 #include string.h,以下程序段的输出结果是 char s=“ an apple“ ; printf(“%dn“, strlen(s); ( A) 7 ( B) 8 ( C) 9 ( D) 10 30 下述程序的输出结果是 #include stdio.h void main() int a5=2, 4,6, 8, 10; int*p=a
14、, *q=&p; printf(“%d, “, *(p+); pfintf(“%d“,*q); ( A) 4, 4 ( B) 2, 2 ( C) 4, 5 ( D) 2, 4 31 设有定义 int n=0, *p=&n, *q=&p;,则下列选项中正确的赋值语句是 ( A) p=1; ( B) *q=2; ( C) q=p; ( D) *p=5; 32 以下程序运行时若要正确输出函数的入口地址和输入数的绝对值,应在程序空缺处填入的正确选项是 abs(int x) if(x =0)return x; else return-x; main() int y, z, (*p)(int x)=abs
15、; scanf(“ %d“ , &y); z=( *p)(y); ; ( A) printf(“%d%dn“, &p, z) ( B) Printf(“%d%dn“, p, z) ( C) printf(“%d%dn“, *p, z) ( D) printf(“%d%dn“, p, *z) 33 以下程序运行后,输出结果是 #define PT 5.5 #define S(x) PT*x*x #include stdio.h main() int a=1, b=2; printf(“%4.1fn“, s(a+b); ( A) 49.5 ( B) 9.5 ( C) 22 ( D) 45.0 34
16、 下面程序段的输出为 #nclude“stdio.h“ main() printf(“%dn“, 12 2); ( A) 0 ( B) 47 ( C) 48 ( D) 24 35 在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是 ( A) auto和 register ( B) extern和 register ( C) auto和 static ( D) static和 register 36 若有以下的说明,对初值中整数 2的正确引用方式是 static struct char ch; int i; double x; a23=a, 1, 3, 45, b, 2, 7, 98,
17、 c, 31,93; ( A) a01.ch ( B) a01.i ( C) a00.i ( D) a02.i 37 若有以下定义的语句 struct student int age; int num; ; struct student stu3=1001, 20, 1002, 19, 1003, 21; main() stmct student *p; p=stu; 则以下不正确的引用是 ( A) (p+)- num ( B) p+ ( C) (*p).num ( D) P=&stu.age 38 以下叙述中错误的是 ( A) gets函数用于从终端读入字符串 ( B) getehar函数用
18、于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 39 如果需要打开一个已经存在的非空文件 “Demo”进行修改,下面选项中正确的是 ( A) fp=fopen(“Demo“, “r“); ( B) fp=fopen(“Demo“, “ab+“); ( C) fp=fopen(“Demo“, “w+“); ( D) fp=fopen(“Demo“, “r+“); 39 长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 _。 39 数据结构分为线性结构和非线性结
19、构,带链的队列属于 _。 39 软件工程研究的内容主要包括: _技术和软件工程管理。 39 常用的黑箱测试有等价分 类法、 _、因果图法和错误推测法 4种。 39 数据库保护分为安全性、控制性、 _、并发性控制和数据恢复。 39 以下程序中,函数 fun的功能是计算 x2-2x+6,主函数中将调用 fun函数计算: y1=(x+8)2-2(x+8)+6 y2=sin2(x)-2sin(x)+6 请填空。 double fun(double x)return(x*x-2*x+6); double x, y1, y2; printf(“Enter x: “); scanf(“%lf“, &x);
20、y1=fun( 6 ); y2=fun( 7 ); printf(“y1=%lf, y2=%lfn“, y1, y 39 以下 isprime函数的功能是判断形参 a是否为素数,是素数,函数返回 1,否则返回 0。请填空。 int isprime(int a) for(i=2; i =a/2; i+) if(a%i=0) 8 ; 9 ; 39 下面程序的运行结果是 _。 main() int i=0, j=10, k=2, s=0; i+=k; if(i j) printf(“%dn“, s); break; s+=i; 39 以下程序的输出结果是 _。 main() char*p=“BOOL
21、“, “OPK“, “H“, “SP:, ; for(i=3; i 0; i-, i-)printf(“%c“, *pi); printf(“n“); 39 以下程序用来输出结构体变量 ex所占存储单元的字节数,请填空。 struct st char name20; double score; ; main() struct st ex; pfintf(“exsize: %dn“, sizeof(_); 39 以下程序的功能是:利用指针向三个整型变量,并通过指针运算找出三个数中最大值,输出到屏幕上。请填空 main() int x, y, z, max, *px, *py, *pz, *pma
22、x; scanf(“%d%d%d“, &x, &y, &z); px=&x; py=&y; pz=&z; pmax=&max; if(*pmax *py)*pmax=*py; if(*pmax *pz)*pmax二 *pz; printf(“max=%dn“, max); 39 以下程 序中函数 fun的功能是:构成一个如图所示的带头结点的单词链表,在结点的数据域中放入了具有两个字符的字符串。函数 disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数 disp。 #include stdio.h typedef struct node /*链表结点结构 */char sub3;
23、 struct node *next; Node; Node fun(char s) /*建立链表 */ void disp(Node *h) Node * 国家二级( C语言)笔试模拟试卷 175答案与解析 1 【正确答案】 C 2 【正确答案】 B 3 【正确答案】 D 4 【正确答案】 B 5 【正确答案】 C 6 【正确答案】 C 7 【正确答案】 C 8 【正确答案】 C 9 【正确答案】 A 10 【正确答案】 D 11 【正确答案】 C 12 【正确答案】 C 13 【正确答案】 B 14 【正确答案】 B 15 【正确答案】 B 16 【正确答案】 D 17 【正确答案】 D
24、18 【正确答案】 A 19 【正确 答案】 B 20 【正确答案】 D 21 【正确答案】 D 22 【正确答案】 B 23 【正确答案】 B 24 【正确答案】 C 25 【正确答案】 C 26 【正确答案】 C 27 【正确答案】 A 28 【正确答案】 B 29 【正确答案】 B 30 【正确答案】 D 31 【正确答案】 D 32 【正确答案】 B 33 【正确答案】 A 34 【正确答案】 C 35 【正确答案】 A 36 【正确答案】 B 37 【正确答案】 D 38 【正确答案】 B 39 【正确答案】 D 39 【试题解析】 如果 a能被 i整除,则 a是素数,返回值为 0。如果 a不能被 i整除,则 a不是素数,返回值为 1。 39 【试题解析】 首先将变量 x的值放到一中,然后依次和变量 y、 z进行比较。若有比一大的数,将该数存放到 max中,这样最后在一中的值就是 x、 y、 z中的最大值。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1