1、国家二级( C语言)笔试模拟试卷 37及答案与解析 1 下列叙述中,错误的是。 ( A)数据的存储结构与数据处理的效率密切相关 ( B)数据的存储结构与数据处理的效率无关 ( C)数据的存储结构在计算机中所占的空间不一定是连续的 ( D)一种数据的逻辑结构可以有多种存储结构 2 树是结点的集合,它的根结点数目是 ( ) ( A)有且只有 1 ( B) 1或多于 1 ( C) 0或 1 ( D)至少 2 3 设有下列二叉树: 对此二叉树中序遍历的结果为 ( ) ( A) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 4 对象实现了数据和操作的结合,是指对数
2、据和数据的操作进行 ( ) ( A)结合 ( B)隐藏 ( C)封装 ( D)抽象 5 检查软件产品是否符合需求定义的过程称为 ( ) ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 6 下面不属于软件设计原则的是 ( ) ( A)抽象 ( B)模块化 ( C)自底向上 ( D)信息隐蔽 7 下面不属于静态测试方法的是 ( ) ( A)代码检查 ( B)白盒法 ( C)静态结构 分析 ( D)代码质量度量 8 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和 ( ) ( A)可重用性差 ( B)安全性差 ( C)非持久性 ( D)冗余性 9 在数据库设计
3、中,将 E-R图转换成关系数据模型的过程属于 ( ) ( A)需求分析阶段 ( B)逻辑设计阶段 ( C)概念设计阶段 ( D)物理设计阶段 10 下列有关数据库的描述,正确的是 ( ) ( A)数据库是一个 DBF文件 ( B)数据库是一个关系 ( C)数据库是一个结构化的数据集合 ( D)数据 库是一组文件 11 下列说法正确的是 ( ) ( A)在执行 C程序时不是从 main函数开始的 ( B) C程序书写格式严格限制,一行内必须写一个语句 ( C) C程序书写格式自由,一个语句可以分写在多行上 ( D) C程序书写格式严格限制,一行内必须写一个语句,并要有行号 12 C语言中最简单的
4、数据类型包括 ( ) ( A)整型、实型、逻辑型 ( B)整型、实型、字符型 ( C)整型、字符型、逻辑型 ( D)整型、实型、逻辑型、字符型 13 在以下一组运算符中,优先级最高的运算符是 ( ) ( A) ( B) ( C) % ( D) ;)语句相当于 while(1)语句 ( C) if(表达式 )语句中,表达式的类型只限于逻辑表达式 ( D) break语句可用于程序的任何地方,以终止程序的执行 15 设 int a 12,则执行完语句 a+ a- a*a后, a的值是 ( ) ( A) 552 ( B) 264 ( C) 144 ( D) -264 16 下列选项中均属于 C语言
5、合法的标识符的是 ( ) ( A) Int #sub break ( B) _3ab FOR Long ( C) 3a printf a_b ( D) WORD auto include 17 若有如下变量定义并赋值: int a 1, b 2, c 3, k; float f 2.5, e; double d 2.4, g; 则下列符合 C语言语法的表达式是 ( ) ( A) e c* a+ d*f%b ( B) (k a+b, b*f+, k%c) ( C) g a+f*c 5 ( D) x double(b) 18 设 x是 int型变量,则计算表达式 “x 25/3%3”的值是 ( )
6、 ( A) 0 ( B) i ( C) 2 ( D)非法 19 以下能正确表示 x在 -5到 -1或 5到 1范围 (含 5和 1)内,值为 “真 ”的表达式是 ( ) ( A) (x -5)| |(x -1) printf(“%un“,x); ( A) -1 ( B) 32767 ( C) 65535 ( D) 65536 21 若有以下定义: float x; int a, b, c 2;,则正确的 switch语句是 ( ) ( A) switch(x) case 1.0:printf(“*n“); case 2.0:printf(“*n“); ( B) switch(int(x) ca
7、se 1:printf(“*n“); case 2:printf(“*n“); ( C) switch(a+b) case 1:printf(“*n“); case 1+2:printf(“*n“); ( D) switch(a+B) case 1:printf(“*n“); case c:printf(“*n“); 22 执行下面程序片段的结果是 ( ) int x 123; do printf(“%3dn“, x-); while(!x); ( A)打印出 321 ( B)打印出 123 ( C)不打印任何内容 ( D)陷入死循环 23 以下程序的输出结果是 ( ) #include st
8、dio h main() int i=0, a 0; while(i 20) for(;)if(i%10)=0)break; else i-; i+ 11;a+ i; printf(“%dn“, A) ; ( A) 21 ( B) 32 ( C) 33 ( D) 11 24 下列与表达式 “b=(a 0?-1:a 0?1:0)”的功能等价选项是 ( ) ( A) b 0; if(a 0) if(a 0) b 1; else b=-1; ( B) if(a 0) b 1; else if(a 0) b -1; else b=0; ( C) if(A)if(a 0) b -1; else if(a
9、 0) b 1; else b 0; ( D) b=-1; if(A)if(a 0) b 1; else if(a 0) b 0; else b -1; 25 若有以下定义; char a; int b; float c; double d;则表达式 “a*b+d-c”值的类型为 ( ) ( A) float ( B) int ( C) char ( D) double 26 以下叙述中正确的是 ( ) ( A)在函数中必须要有 return语句 ( B)在函数中可以有多个 return语句,但只执行其中的一个 ( C) return语句中 必须要有一个表达式 ( D)函数值并不总是通过 re
10、turn语句传回调用处 27 有以下程序 float fun(int x, int y) return(x+y); main() int a=2,b=5, c=8; printf(“%3.0fn“, fun(int)fun(a+c,B) , a-C) ); 程序运行后的输出结果是 ( ) ( A)编译出错 ( B) 9 ( C) 21 ( D) 9 28 若已定义: int a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p a, I; 其中 0i9,则对 a数组元素不正确的引用是 ( ) ( A) ap-a ( B) *( 则程序运行后的输出结果是 ( ) ( A) Jap
11、an ( B) USA ( C) USA ( D) inaJapanUSAFrance 31 若有如下程序; main() char a=“china0name0“; printf(“%d, “, strlen(A) ); printf(“%dn“, sizeof(A) ); 则程序运行后的输出结果是 ( ) ( A) 5, 11 ( B) 5, 12 ( C) 11, 11 ( D) 12, 12 32 指针变量 p的基类型为 int,并已指向一连续存储区,若 p中当前的地址值为 1234,则执行 p+后, p中的值为 ( ) ( A) 1234 ( B) 1235 ( C) 1236 (
12、D) 1237 33 函数调用 “strcat(strcpy(str1, str2), str3) “的功能是 ( ) ( A)将申 str1拷贝到串 str2中后再连接到申 str3之后 ( B)将串 str1连接到中 str2之后再拷贝到串 str3之后 ( C)将串 str2拷贝到串 str1中后再将串 str3连接到串 str1之后 ( D)将串 str2连接到串 str1之后再将串 str1拷贝到串 str3中 34 下面宏定义正确的是 ( ) ( A) #define S a*b ( B) #define PI 3.14; ( C) #define max(a, b) (a) (b
13、) ?(a) ; (b) ) ( D) #define s(x) (x)*(x); 35 下面叙述正确的是 ( ) ( A)函数调用不可以出现在表达式中 ( B)函数调用可以作为一个函数的实参 ( C)函数调用可以作为一个函数的形参 ( D)函数不可以直接调用其本身 36 有如下程序 #include stdio h main() int v1=0, v2=0; char ch; while(ch getchar()!=#) switch(ch) case a; casff h; default: v1+; case 0; v2+; printf(“%d, %dn“, v1, v2); 如果从
14、键盘上输入 china#回车,则程序运行结果为 ( ) ( A) 2, 0 ( B) 5, 0 ( C) 5, 5 ( D) 2, 5 37 程序中头文件 typel h的内容是: #define N 5 #define M1 N*3 程序如下: #include “type1 h” #define M2 N*2 main() int i; i M1+M2; printf(“%dn“, i); 程序编译运行后的输出结果是 ( ) ( A) 10 ( B) 20 ( C) 25 ( D) 30 38 C语言规定函数返回值的类型由 ( ) ( A)在定义时所指定的函数类型所决定 ( B)调用该函数
15、时的主调函数类型所决定 ( C) return语句中的表达式类型所决定 ( D)调用该函数时系统临时决定 39 若有如下程序: main() int a34=1, 2, 3, 4, 5, 6, 7, 8, 9; printf(“%d%d%dn“, a01, a12, a23); 则程序运行后的输出结果是 ( ) ( A) 270 ( B) 480 ( C) 160 ( D)不定值 40 以下能将字符串, you are luck!正确读入的语句组是 ( ) ( A) char s80; scanf(“%s“, s); ( B) char *s: scanf(“%s“, s); ( C) cha
16、r s80; gets(s); ( D) char *s; gets(3); 41 C语言提供的预处理功能包括条件,其基本形式为: #标识符 程序段 1 #else 程序段 2 #endif 这里的 可以是 ( ) ( A) define或 include ( B) ifdef或 include ( C) indef或 ifndef或 define ( D) ifdef或 ifndef或 if 42 若有如下语句: struct a char x10 int y; s, *t; t strcpy(arr, “you“); strcpy(arr1, “me“); arr03= 执行后的输出结果是
17、 ( ) ( A) you 上面程序的输出结果是 ( ) ( A) 60 ( B) 3.3 ( C) 63.3 ( D) 1.1 47 以下程序的输出结果是 ( ) # include stdio h main() union unint i; long k; char c; ; struct byte int a; long b; union un c; r; printf(“%dn“, sizeof(r); ( A) 10 ( B) 13 ( C) 7 ( D) 8 48 若主函数中有以下定义和语句: main() double a34; fun(a) ; 则正确的 fun函数的首部是 (
18、 ) ( A) void fun(double *s) ( B) fun(double *s4) ( C) fun(double(*s)3) ( D) void fun(double(*s)4) 49 有以下程序: int fa(int x) return x*x; int fb(int x) return x*x*x; int f(int (*f1)(), int (* f2)(), int x) return (*f2)(x)-(*f1)(x); main() int i; i f(fa, fb, 2); printf(“%dn“,i); 程序运行后的输出结果是 ( ) ( A) -4 (
19、 B) 1 ( C) 4 ( D) 8 50 C语言中共用体类型变量在程序运行期间 ( ) ( A)最后一次存放的成员起作用,其他成员都已失去作用 ( B)已存放的一部分成员在内存中起作用 ( C)已存放的成员没有一个在内存中起作用 ( D)已存放的所有成员在内存中都起作用 51 结构化程序设计的三种基本逻辑结构为顺 序、选择和【 】。 52 冒泡排序算法在最好的情况下的元素交换次数为【 】。 53 软件结构是以【 】为基础而组成的一种控制层次结构。 54 在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【 】。 55 关系数据库的关系演算语言是以【 】为基础的 DML语言
20、。 56 语句 X+;、 +X;、 X=X+1;、 X=1+X;,执行后都使变量 X中的值增 1,请写出一条同一功能的赋值语句 (不得与列举的相同 )【 】。 57 设 Y是 int型变量,请写出判断 Y为奇数的关系 表达式【 】。 58 以下程序的输出是【 】。 main() char str1=“How do you do“,*p1=str1; strcpy(str1+strlen(str1)/2,“es she“); printf(“%sn“,p1); 59 以上程序运行后的输出结果是【 】。 main() int i=10,j=0; do j=j+i; i-; while(i 2);
21、printf(“%dn“j); 60 设有如下程序: main() int n1,n2; scanf(“%d“, while(n2!=0) n1=n2%10; n2=n2/10; Printf(“%d“,n1); 程序运行后,如果从键盘上输入 1298,则输出结果为【 】。 61 以下程序输出的最后一个值是【 】。 int ff(int n) static int f=1; f=f*n; return f, main() int i; for(i=1;i =5;i+) printf(“%dn“,ff(i); 62 以下函数的功能是求 x的 y次方,请填空。 double fun(double
22、x,int y) int i; double z; for(i=1,z=x;i y;i+)z=z*【 】; return z; 63 下列程序的输出结果是【 】。 main() int a=2,4,6, *ptr= for(y=0;y 3;y+) z=(*(ptr+y) x)?*(ptr+y):x; printf(“%dn“,z); 64 以下程序运行后的输出结果是【 】。 main() char s=“9876“, *p; for(p=s;p s+2;p+)printf(“%sn“,p); 65 若有定义语句 char s100,d100; int j=0,i=0;且 s中已赋字符串,请填空
23、以实现拷贝。 (注:不使用逗号表达式 ) while(si=【 】 ;j+; dj=0; 66 若有如下结构体说明: struct STRU int a,b; char c: double d; struct STRU *p1, *p2; ; 请填空,以完成对 t数组的定义, t数组的每个元素为该结构体类型。 【 】 t20 67 以下程序段打开文件后,先利用 fseek函数将文件位置指 针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。 FILE*myf; long f1; myf=【 】 (“test,t“,“rb“); fseek(myf,
24、(),SEEK_END; f1+ftell(myf); fclose(myf); printf(“%1dn“,f1); 68 下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。 (注:程序采用了冒泡排序算法 ) #include stdio.h #include string.h main() char*str=“ABCDabcd“, temp; int n,i; n=strlen(str); while(n- 1) for(i=0; i n;i+) if(stri stri+1) temp=【 】; stri=stri+1; 【 】 =temp; printf(【 】 ); 国家二级( C语言)笔试模拟试卷 37答案与解析