国家二级C语言机试(选择题)模拟试卷262
选择题
1.若变量都己正确说明,则以下程序段输出结果为( )。
#include
main()
{char a=’a’;
int b=2:
printf(a>b?\\(D)
A. ***a=3
B. ###b=3
C. ***a=3##b=5
D. 全部错误
解析:本题考查printf函数的格式和三目运算符“?:”的使用。printf函数中格式说明符之前插入的任何字符都原样输出。本题中“a>b”为真,所以返回“***a=97”。
2.对于循环队列,下列叙述中正确的是(D)
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 队头指针可以大于队尾指针,也可以小于队尾指针
解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。
3.若有以下程序段:
struct st
{ int n;
int *m;};
int a=2,b=3,c=5;
struct
st s[3]=({101,&a},{102,&c},{103,&b}};
main()
{ struct st *p;
p=s;
…}
则以下表达式中值为5的是( )。(D)
A. (p++)->m
B. *(p++)->m
C. (*p)-m
D. *(H_p)->m
解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变量s的指针p,要使表达式的值为5,就应该引用s[1].m的值,使指针p指向s[1],++p可以实现将p指针加1,指向s[1]。
4.下列叙述中正确的是( )。(B)
A. 在链表中,如果每个结点有两个指针域,则该链表一定是非线性结构
B. 在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是非线性结构
C. 在链表中,如果每个结点有两个指针域,则该链表一定是线性结构
D. 在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构
解析:判断一个非空的数据结构是否为线性结构必须满足以下两个条件:① 有且只有一个根结点;② 每一个结点最多有一个前件,也最多有一个后件。选项B)中,如果有两个结点的同一个指针域的值相等,则说明至少有一个结点有两个前件,不符合线性结构的定义,所以答案选B)。
5.下面属于白盒测试方法的是( )。(B)
A. 等价类划分法
B. 判定一条件覆盖
C. 因果图法
D. 错误推测法(猜错法)
解析:白盒测试法主要有逻辑覆盖、基本路径测试等。其中,逻辑覆盖又包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断一条件覆盖。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。
6.若有以下程序,编译时出现错误,你认为出错的是
#include
main(){int a=0,b=0,c=0,d;
c=(a+=b,,b+=a); /*第4行*/
d=c;;/*第5行*/
; /*第6行*/
printf(\\(A)
A. 第4行
B. 第5行
C. 第6行
D. 第7行
解析:第4行出错,在第4行括号中两个逗号不可以为空。单独的分号为C语言的空语句,是编译程序可以识别并且编译的,因此第5、6行都是正确的。
7.在黑盒测试方法中,设计测试用例的主要根据是( )。(B)
A. 程序内部逻辑
B. 程序外部功能
C. 程序数据结构
D. 程序流程图
解析:黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择B。
8.设一棵树的度为3,其中度为3,2,1的结点个数分别为4,1,3。则该棵树中的叶子结点数为(A)
A. 10
B. 11
C. 12
D. 不可能有这样的树
解析:因为任一棵树中,结点总数=总分支数目+1,所以:n0+4+1+3=(n0*0 + 3*4 + 2*1 + 1*3)+1,计算结果n0=10。其中,n0表示叶子结点。所以选项A正确。
9.学生和课程的关系模式定义为:
S(S#,Sn,Sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);
C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课);
SC(S#,C#,G)(其属性分别学号、课程号和成绩)。
关系中包含对主属性传递依赖的是( )。(C)
A. S#→Sd
B. S#→Sd,(S#,C#)→G
C. S#→Sd,Sd→Dc
D. C#→P#,(S#,C#)→G
解析:关系SC的主属性为(S#、C#),但在SC中S#(学号)单独就可以决定Sd(所在系),Sd(所在系)可决定Dc(所在系的系主任),故对主属性传递依赖的是S#→Sd,Sd→Dc。
10.sizeof(char)是( )。(B)
A. 一种函数调用
B. 一个整型表达式
C. 一个字符型表达式
D. 一个不合法的表达式
解析:“sizeof(char)”是一个C语言的关键字,它不是函数调用。“sizeof”的功能是计算出运算对象在计算机的内存中所占用的字节数量,该表达式的返回值是一个整数,而不是一个字符型表达式。
11.若有以下定义和语句:
#include<stdio.h>
char s1[10]=’’abcd!’’,*s2=’’\n123\\’’;
printf(’’%d%d\n’’,strlen(s1),strlen(s2));
程序的运行结果是( )。(C)
A. 10 7
B. 10 5
C. 5 5
D. 5 8
解析:strlen函数返回字符串的长度,求字符串长度时,遇到结束标志’\0’为止,但是长度不包括结束标识。字符数组sl的后5个元素没有赋值,都为’\0’,即’’abcd!’’后为’\0’,所以strlen(s1)的值为5。字符指针s2所指向的字符串中,\n为转义字符换行符,表
本文档预览:3600字符,共8056字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载