1、国家二级( C语言)笔试模拟试卷 258 及答案与解析 1 在面向对象方法中, ( )描述的是具有相似属性与操作的一组对象。 ( A)属性 ( B)事件 ( C)方法 ( D)类 2 在黑盒测试方法中 ,设计测试用例的主要根据是 ( A)程序内部逻辑 ( B)程序外部功能 ( C)程序数据结构 ( D)程序流程图 3 数据的存储结构是指 ( )。 ( A)数据所占的存储空间量 ( B)数据的逻辑结构在计算机中的表示 ( C)数据在计算机中的顺序存储方式 ( D)存储在外存中的数据 4 若 待排序序列中元素非常多,而且它们的排列是完全无序的,那么最好选用下列排序方法中的 _。 ( A)冒泡排序
2、( B)简单选择排序 ( C)直接插入排序 ( D)快速排序 5 下列关于 “数据库系统 (DBS)”的叙述中,正确的一条是 _。 ( A) DBS是指在计算机系统中引入数据库后的系统构成 ( B) DBS是帮助用户建立、使用和管理数据库的一种计算机软件 ( C) DBS是用户建立的若干数据库文件的集合 ( D) DBS是一种新颖的关系数据库管理系统 6 完全不考虑程序的内部结构和内部特征, 而只是根据程序功能导出测试用例的测试方法是 ( A)黑箱测试法 ( B)白箱测试法 ( C)错误推测法 ( D)安装测试法 7 对于白箱 (盒 )测试用例的各设计准则,下列叙述中正确的是 ( )。 ( A
3、)分支覆盖准则比语句覆盖准则严密 ( B)条件覆盖要比分支覆盖优越。因此,条件覆盖能完全满足分支覆盖 ( C)组合条件覆盖准则既能满足分支覆盖准则,也能满足条件覆盖准则。因此,组合条件覆盖准则是一种完全测试 ( D)上述说法都不对 8 数据的存储结构是指 ( A)数据所占的存储空间量 ( B)数据的逻辑 结构在计算机中表示 ( C)数据在计算机中的顺序存储方式 ( D)存储在外存中的数据 9 某片软盘上已染有病毒,为防止该病毒传梁计算机系统,正确的措施是 ( ) ( A)删除该软盘上的所有程序 ( B)给该软盘加上写保护 ( C)将该软盘放一段时间后再用 ( D)将该软盘重新格式化 10 在面
4、向对象方法中,实现信息隐蔽是依靠 ( A)对象的继承 ( B)对象的多态 ( C)对象的封装 ( D)对象的分类 11 以下叙述中正确的是 ( )。 ( A) C程序中注释部分可以出现在程序中任意合适的地 方 ( B) C程序的书写格式是固定的,每行只能写一条语句 ( C)构成 C程序的基本单位是函数,所有函数名都可以由用户命名 ( D)在对 C语言程序进行编译时,可以发现注释行中的拼写错误 12 以下程序执行后 x的值是 main() int x,y=252,i=386,*m= x=(z=y); printf(“%d“,x); ( A) 252 ( B) 1 ( C) 0 ( D)运行时出错
5、 ,x无定值 13 以下程序的输出结果是 ( )。 main() int a=7, b=8, *p, *q, *r; p= printf(“%dn“,-a+b,-b+a); ( A) 30 ( B) 31 ( C) 32 ( D) 33 15 下列选项中,不能用作标识符的是 ( A) _1234_ ( B) _1_2 ( C) int_2_ ( D) 2_int_ 16 下列属于 C语言语句的是 _。 ( A) printf(“%dn“a) ( B) #include stdio.h ( C) a=b;b=c;c=a; ( D) /*this is a program*/ 17 以下叙述中正确
6、的是 ( ) ( A) C程序中,赋值运算符的优先级最低 ( B)若 a是实 型变量, C程序中允许进行以下赋值: a=10,因此,实型变量中允许存放整型数 ( C)若 a和 b类型相同,在执行了赋值 a b后 b中的值将放入 a中, b中的值将丢失 ( D)在 C程序中,除号运算符 “/”两边的类型相同时才能进行相除运算 18 若有如下程序; main() int m=-i; printf(“%d,%u,%o,%X“,m,m,m,m); 则程序运行后的输出结果是 ( )。 ( A) -1, 65535, 177777, ffff ( B) -1, -1, 177777, fffe ( C)
7、-1, 1, 177777, ffff ( D) -1, 65535, 177776, fffe 19 为了避免在嵌套的条件语句 if else中产生二义性, C语言规定, else子句总是与( )配对。 ( A)缩排位置相同 if ( B)其前面最近的 if ( C)其后面最近的 if ( D)同一行上的 if 20 下列程序的运行结果是 ( )。 main() int a=-5, b=1, c=1; int x=0, Y=2,z=0; if(c 0)x=x+ y; if(a =0) if(b 0) if(c =0)y=x-y; else if(c 0)Y=x-y; else z=y; pr
8、intf(“%d, %d, %dn“, x, y, z); ( A) 2, 2, 0 ( B) 2,2, 2 ( C) 0,2, 0 ( D) 2,0, 2 21 一个算法应该具有 “确定性 ”等 5个特性,下面对另外 4个特性的描述中错误的是 ( ) ( A)有零个或多个输入 ( B)有零个或多个输出 ( C)有穷性 ( D)可行性 22 设有以下说明语句 typedef struct int n; char ch8; PER; 则下面叙述中正确的是 ( A) PER是结构体变量名 ( B) PER是结构体类型名 ( C) typedef struct是结构体类型 ( D) struct是结
9、构体类型名 23 执行以下程序段的输出结果是 ( )。 int m=0x12,n=0x12; m=m-n; printf(“%Xn“,m); ( A) 0X0 ( B) 0X12 ( C) 0x0 ( D) 0 24 有以下程序 #include main0 int y=9; for( ; y0;y-) if(y%3=0) printf(“%d“,-y); 程序的运行结果是 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 25 有以下程序: int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main()
10、 int X; scanf(“ d“, main() int i; int *p=a; for(i=0;ib) c=1; else if(a=b)c=0; else c=-1: printf(“ d n”, C; 48 下列程序的功能是:求出 ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串 123412132,输入字符 1,则输出 3,请填空。 #includeconio.h #include stdio.h #define M 81 int fun(char*ss, charC)int i=0; for(; ( ); ss+) if(*ss=C)i+; return i;
11、main() char aM, ch; printf(“nPlease enter a string: “); gets(A); printf(“nPlease enter a char: “);ch=getchar(); printf(“nThe number of the char is: %dn“, fun(a, ch); 48 设 y为血型变 量,请写出描述 “y是偶数 ”的表达式 _。 49 数据结构分为逻辑结构与 ( )。 50 以下程序的输出结果是【 】。 #include main() char a,b; for(a=0;ab不成立,继续判断 a=b,仍不成立,则执行 c=-1
12、,输出 -1。 48 【正确答案】 *ss!=0 【试题解析】 本题考查的是指针的应用。题目要求求出字符串 ss中指定字符的个数。分析整个程序,空缺处是检验指针 ss是否指向了字符串的末尾,如没有,即执行下面语句,判断指针 ss指向的字符是否字符 c,若是, i自加 1;所以空缺处填入 *ss!=0,作为循环终止的条件。 48 【试题解析】 因符合偶数的条件是对 2取余为 0,所以要描述 y是偶数的表达式是 (y%2) 0。 49 【正确答案】 存储结构 【试题解析】 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,即数据的组织形式。它分为数据的逻辑结构和数据的存储结构。 50 【
13、正确答案】 3 5 【试题解析】 本题考查 for循环语句和字符变量 ,当 a=0时 ,字符变量参与运算 ,先转换为其 ASCII整型数据 ,然后再与整数进行运算 ,b=a%10=48,即字符 0,所以输出字符 “0”;依次类推 ,当 a=7时 ,输出字符 “7”;当 a=14时 ,输出字符 “4”;当 a=21时 ,循环终止。 51 【正确答案 】 60 【试题解析】 本题中 ,代码定义 3行 2列的二维数组 a,定义指向两个元素的一维数组指针 p,并让 p 指向两维数组 a的首行 ,则代码 *(*(p+2)+1)中的 p+2指向两维数组 a的第三行 a2,*(p+2)指向 指向 a21,*
14、(*(p+2)+1)是引用a21,其值是 60 52 【正确答案】 a=14 【试题解析】 本题考查的是表达式的优先级问题。先计算表达式 3*5=15,再计算a+4=14,将数据 14赋值给 a,根据 printf()函数内的输出 格式控制串 ,最后的输出结果应为 “a=14“。 53 【正确答案】 SO 54 【正确答案】 21 【试题解析】 外层 switch 语句后面括号里的 x的值为 1,所以执行从 case 1:后面的语句开始执行,而 case 1:后面语句也为 switch 语句,这个 switch 语句后面括号里的 y的值为 0,所以从该 switch 语句里的 case 0:开
15、始执行即执行 a+,这时 a的值变为 1,执行完毕,遇到 break 语句,退出内层 switch 语句,又回到外层switch 语句,继续执行 case 1:下面的语句即 case 2:执行完毕后, a自加 1变为2, b 自加 1变 1。所以最后输出的 a和 b的值为 21。 55 【正确答案】 DDBBCC 【试题解析】 C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值 +1。在本题中,没有明确说明枚举元素 em3的值,则 em3=em2+1=1+1=2,进而可知,在 printf()打印函数中,要打印的数组元素是 aa3, aa1、 aa2,因此最后的打印结果应当为 “DDBBCC”。 56 【正确答案】 row arowcolum 【试题解析】 通过对题意的分析,在 select()函数中,变量 row的作用是用来记录最大元素的行下标, column 的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量 row和 colmnn 中,根据题意,应该把行下标赋值给形参指针变量 n 指向的变量,把最大值arowcoluma作为函数值返回。