1、国家二级( C语言)笔试模拟试卷 69及答案与解析 1 进行二分法查找,则线形表 _。 ( A)必须以顺序方式存储 ( B)必须以链接方式存储,且数据元素已按值排好序 ( C)必须以链接方式存储 ( D)必须以顺序方式存储,且数据元素已按值排好序 2 下列数据结构中的 _是线性结构。 ( A)队列 ( B)有向图 ( C)树 ( D)哈夫曼树 3 在具有 n个结点的二叉排序树上插入一个新结点时,根据 n个数据元素生成一棵二叉排序树时,其时间复杂性大致为 _。 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) O(nlog2n) 4 人们提出了用 _的原理来设计软件
2、,这就是软件工程学诞生的基础。 ( A)计算机科学 ( B)数学 ( C)工程学 ( D)运筹学 5 结构化程序设计方法在软件开发中用于 _。 ( A)需求分析 ( B)详细设计 ( C)可行性分析 ( D)程序设计 6 在下列叙述中,错误的一条是 _。 ( A)对关系的描述称为关系模式,一个关系模式对应一个关系的结构 ( B)不同元组对同一个属性的取值范围称为域 ( C)二维表中的行称为属性 ( D)所谓关键字,即属性或属性组合,其值能够惟一标识一个元组 7 在 C语言中,表达式 10!=9的值是 _。 ( A)真 ( B)非零值 ( C) 0 ( D) 1 8 下列程序的输出结果是 _。
3、main() int i, j; for(j=10; j 11; i+) for(i=9; i j; i+) if(!(j%i)break; if(i =j-1)printf(”%d”, i); ( A) 11 ( B) 10 ( C) 9 ( D) 10 11 9 C语言提供的合法关键字是 _。 ( A) swicth ( B) chan ( C) Case ( D) default 10 在 C语言中,以下一组运算符中,优先级最高的运算符是 _。 ( A) = ( B) = ( C) % ( D) b=c;c=a; ( D) /*this is a program*/ 13 下列叙述中正确
4、的是 _。 ( A) C程序中注释部分可以出现在程序中任何合适的地方 ( B)花括号 “和 “只能作为函数体的定界符 ( C)构成 C程序的基本单位是函数,所有函数名 都可以由用户命名 ( D)分号是 C语句之间的分隔符,不是语句的一部分 14 以下合法的赋值语句是 _。 ( A) X=Y=100 ( B) D-; ( C) X+Y; ( D) C=int( + ) 15 运行下面的程序,其输出结果为 _。 main() printf(“%d,%d“,5%-3, -5%3); ( A) 2,-2 ( B) -2,2 ( C) -2, -2 ( D) 2,2 16 设 x,y均为 int型变量,
5、且 x=10, y=3,则 printf(“%d,%dn“,x-,-y);语句的输出结果是 _。 ( A) 10,3 ( B) 9,3 ( C) 9,2 ( D) 10,2 17 设 x为 int型变量,执行以下语句, x=10;x+=x-=x-x;x的值为 _。 ( A) 10 ( B) 20 ( C) 30 ( D) 40 18 X、 Y、 Z被定义为 int型变量,若从键盘给 X、 Y、 Z输入数据,正确的输入语句是 _。 ( A) INPUT X,Y,Z; ( B) scanf(“%d%d%d“, ( C) scanf(“%d%d%d“,X,Y,Z); ( D) read(“%d%d%
6、d“, 19 以下程序的输出结果是 _。 main() int a=3; printf(“%dn“,(a+=a-=a*A) ); ( A) -6 ( B) 1 ( C) 2 ( D) -12 20 设 int型占 2个字节,则 unsigned int所能表示的数据范围是 _。 ( A) 0 65535 ( B) -32769 32767 ( C) 1 65536 ( D) 0 32767 21 下列程序运行后,如果从键盘上输入 ABCDE回车,则输出结果为_。 #include stdio h #include string h fuch (char str ) int num=0; whi
7、le (*(str+num)!=0)num+; return(num); main() char str10, *p=str; gets(p); printf(“%dn“, fuch(p); ( A) 8 ( B) 7 ( C) 6 ( D) 5 22 下列程序运行后 ,输出结果是 _。 #include stdio. h #include string. h fun (char *w ,int n) char t,*s1,*s2; s1=w; s2=w+n-1; while (s1 s2) t=*s1+; *s1=*s2-; *s2=t; main () char *p; p=“123456
8、7“; fun (p, strlen (p); puts (p); ( A) 1234567 ( B) 7654321 ( C) 1711717 ( D) 7177171 23 下列程序中的 for循环执行的次数是 _。 #define N 2 #define M N+1 #define NUM 2*M+1 #main ( ) int i; for (i=1;i =NUM;i+) printf (“%dn“, i); ( A) 5 ( B) 6 ( C) 7 ( D) 8 24 下列程序的运行结果为 _。 main ( ) int a, *p; p= a=100; printf(“a=%d *
9、p=%d * a+; printf(“a+=%d “,a); (*p) +; printf(“(*p)+=%d “,*p); *p+; printf (“*p+=%dn“, *p); ( A) a=100 *p=100 * char a=“I love china!“, b20, *p1, *p2; p1=a; p2=b; while(*p1) *p2=*p1; p1+; p2+; *p2=0; printf(“string b is: %sn“, b); 38 若输入 tc,则程序的运行结果为【 】。 #include stdio.h main() char str40; fscanf(st
10、din, “%s“, str); fprintf(stdout, “%sn“, str); 39 当输入 19、 2时,下列程序的运行结果为【 】;输入 254、 16时,则程序的运行结果是【 】。 main() char data_symbols17=“0123456789abcdefghijklmnopqrstuvwxyz“; int i=0, t, subscript, data_converted32; long number; while (1) scanf(“%ld, %d“, ”,而答案 C中,表达式是不能独立成为语句的,答案 B使用了 C语言的自减运算符它就相当于 D=D-1,
11、所以答案 B为一赋值语句。 15 【正确答案】 A 【试题解析】 在 C中,参与 %运算的两个参数都必须为整型,在大多数 C编译器下 (包括 TurboC) 都采用了 “向 0靠近 ”的原则,即当两个运算量有一个为负数时,余数的符号由被除数的符号决定。故本题答案为 A。 16 【正确答案】 D 【试题解析】 C语言的自减运算符有前置与后置两种形式。当自减运算符前置时,变量先自减一后再参与表达式运算;而后置时,变量先参与表达式运算后再自身减一。 17 【正确答案】 B 【试题解析】 本题 x=10,表达式 “x+=x=x-x; ”的求解步骤如下:先进行 x-=x-x的运算,相当于 x=x-(x-
12、x)=x=10;再进行 x+=x的运算,即 x=x+x=20。 18 【正确答案】 B 【试题解析】 C语言中没有输入输出语句,它是通过 C语言提供的函数来实现的, 本题 C中,应为变量地址。 19 【正确答案】 D 【试题解析】 赋值运算符的结合方向是自右至左,所以表达式 a+=a-=a*a先运算最右边的 a*a得 9,再运算 a=a-9,即 a=3-9,所以此时 a的值由 3变成了 -6,最后运算 a=a+(-6),即 a=(-6)+(-6)=-12。 20 【正确答案】 A 【试题解析】 本题 int型占 2个字节,即 16位, unsigned int所能表示的数据范围是 O (216
13、-1),即 0-65535。 21 【正确答案】 D 22 【正确答案】 C 23 【正确答案】 B 24 【正确答案】 A 25 【正确答案】 D 26 【正确答案】 A 27 【正确答案】 B 28 【正确答案】 A 29 【正确答案】 C 30 【正确答案】 B 31 【正确答案】 O(2) 32 【正确答案】 概要 /初步 33 【正确答案】 数据库系统 34 【正确答案】 x1=-1.00; x2=-2.00 35 【正确答案】 索引表 块 36 【正确答案】 82.25 37 【正确答案】 string b is: I love china! 38 【正确答案】 tc 39 【正确答案】 10011 fe 40 【正确答案】 1 np*=i或 np=np*i 41 【正确答案】 #include “math.h“ m i&1 m|k