国家二级C语言机试(选择题)模拟试卷279
选择题
1.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是(D)
A. 快速排序
B. 冒泡排序
C. 直接插入排序
D. 堆排序
解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)。
2.设二叉树的后序序列与中序序列均为ABCDEFGH,则该二叉树的前序序列为(A)
A. HGFEDCBA
B. ABCDEFGH
C. ABCDHGFE
D. DCBAHGFE
解析:后序遍历中,最后一个字母是根结点,也就是H是根结点;在中序遍历中,根结点前面的是左子树、后面的是右子树,H后面没有,因此该树没有右子树。同理,可判断出该树是第一个完全的左子树。由此可画出这个二叉树,然后根据二叉树可的前序序列为HGFEDCBA。
3.以下选项中不能用作C程序合法常量的是( )。(C)
A. 123
B. ‘\123’
C. l,234
D. “\xTD”
解析:C选项中不能含有逗号,所以“1,234”不能用作C程序的合法常量。B选项表示的是八进制的常量,D选项表示的是十六进制的常量。
4.软件生命周期中的活动不包括( )。(A)
A. 市场调研
B. 需求分析
C. 软件测试
D. 软件维护
解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护,所以选择A。
5.设变量已正确定义并赋值,下列表达式中正确的是( )。(A)
A. x=y+z+5,++y
B. iut(15.8%5)
C. x=y*5=x+z
D. x=25%5.0
解析:B选项与D选项中取模运算符%的左右两个操作数均应为整数,所以错误。C选项中不能将x+y的值赋给表达式y*5,所以C选项错误。
6.设有关系表学生S( 学号,姓名,性别,年龄,身份证号) ,每个学生学号唯一。除属性学号外,也可以作为键的是( )。(B)
A. 姓名
B. 身份证号
C. 姓名,性别,年龄
D. 学号,姓名
解析:在二维表中凡能唯一标识元组的最小属性集成为该表的键或码。根据这个概念,在以上选项中,身份证号可以作为该表的键,答案选B。
7.下面不属于结构化程序设计风格的是(D)
A. 程序结构良好
B. 程序的易读性
C. 不滥用Goto语句
D. 程序的执行效率
解析:结构化程序设计(stmctured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。
8.若以下选项中的变量a,b,y均已正确定义并赋值,则语法正确的switch语句是
A
解析:使用switch语句直接处理多个分支,其一般形式为:
switch(表达式)
{ case常量表达式1:
语句1:
break;
case常量表达式n:
语句n;
break;
default:
语句n+1:
break;
}
switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句:若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句。
对于选项B,case语句和常量之间没有空格,而选项C中的case后面为变量,选项D中switch后面没给出圆括号。
9.若有以下程序#include
char*a=\\(A)
A. you to China!
B. to China!
C. me you to China!
D. China!
解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有子串a,如果含有则退出,此时i为子串a在字符串b中第一次出现的位置。因此最后的输出函数则从第i个字符开始一直输出到字符串的末尾。
10.有以下程序
fun(int x) main()
{int p; {
if(x==0}‖x==1)return(3);printf(\\(D)
A. 3
B. 7
C. 0
D. 2
解析:因为在函数fun(int x)中,如果参数x等于0或等于1时,返回值为“3”。否则“p=x-fun(x-2)”这是一个递归函数,所以在主函数调用fun(7)的时候,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。
11.以下选项中,当x为大于1的奇数时,值为0的表达式是( )。(A)
A. x%2==0
B. x/2
C. x%2!=0
D. x%2==1
解析:题中x为大于1的奇数,\\
12.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是(D)
A. #define n 5 int a[2*n];
B. int a[5+5];
C. #define N 10 int a[N];
D. int n=10,a[n];
解析:在C语言中,定义一维数组的语句形式为:类型名 数组名[整型常量表达式]。在选项D中,n是一个整型的变量。
13.下列定义变量的语句中错误的是(A)
A. float US$;
B. double int_;
C. char For;
D. int_int;
解析:C语言规定,变量的标识符只能由字母、数字或下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项B)定义的变量标识符int和选项D)定义的变量标识符int与C浯占的关键字int是不同的,是正确的变量标识。选项C)定义的变量标识符For与C语言中的关键字for是两个不同的标识符,而存选项A)包含有特殊字符$,因而其不符合C语言的变量命名规定。
14.若有定义“int x,y;”并已正确给变量赋值,则以下选项中与表达式“(x-y)?(x++):(y++)”中的条件表达式(x-y)等价的是(D)
A. (x-y<0)
B. (x-y>0)
C. (x-y<0||x-y>0)
D. (x-y==0)
解析:条传表达式的形式如下:表达式1?表达式2:表
本文档预览:3600字符,共7268字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载