国家二级C语言机试(选择题)模拟试卷264
选择题
1.若有定义:int a,b,c;,则以下选项中的赋值语句正确的是( )。(C)
A. a=(b==c)=1;
B. (a=b)=c=1;
C. a=(b=c)+1;
D. a+b=c;
解析:赋值运算符的左侧必须为变量而不能是表达式,所以答案选c。
2.以下叙述中正确的是(B)
A. C程序书写格式严格,要求一行内只能写一个语句
B. C程序书写格式自由,一个语句可以写在多行上
C. C程序中的注释只能出现在程序的开始位置和语句的后面
D. 用C语言编写的程序只能放在一个程序文件中
解析:本题主要考查的是C语言结构中的源程序书写格式这个知识点,在C语言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置;C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。
3.在快速排序法中,每经过一次数据交换(或移动)后( )。(B)
A. 只能消除一个逆序
B. 能消除多个逆序
C. 不会产生新的逆序
D. 消除的逆序个数一定比新产生的逆序个数多
解析:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。快速排序的思想是:从线性表中选取一个元素,设为T,将线性表中后面小于T的元素移到前面,而前面大于T的元素移到后面,结果就将线性表分成两部分(称两个子表),T插入到其分割线的位置处,这个过程称为线性表的分割,然后再用同样的方法对分割出的子表再进行同样的分割。快速排序不是对两个相邻元素进行比较,可以实线通过一次交换而消除多个逆序,但由于均与T(基准元素)比较,也可能会产生新的逆序。
4.对如下二叉树
(D)
A. ABCDEF
B. DBEAFC
C. ABDECF
D. DEBFCA
解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回:否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项D为正确答案。
5.在源程序的开始处加上#include<stdio.h>进行文件引用的原因,以下叙述正确的是( )。(A)
A. stdio.h文件中包含标准输入/输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数
B. 将stdio.h中标准输入/输出函数链接到编译生成的可执行文件中,以便能正确运行
C. 将stdio.h中标准输入/输出函数的源程序插入到引用处,以便进行编译链接
D. 将stdio.h中标准输入/输出函数的二进制代码插入到引用处,以便进行编译链接
解析:stdio.h包含标准库函数头文件,很多库函数的声明都在stdio.h这个文件中,包含之后就可以用其中的库函数,例如printf函数,scanf函数等。
6.设有以下定义和语句,输出的结果是(用small模式编译,指针变量占2个字节)( )。
struct U
{ long*cat;
stmct U*next;
double dog;
}u;
printf(\\(D)
A. 20
B. 16
C. 14
D. 12
解析:当结构成员是指针时,它将占用2字节的存储单元(在small编译模式下),而与它所指向的数据类型无关。本题中,指针cat的长度为2字节;next是指向结构struct U的指针,但它本身也只是一个指针,其长度也是2字节;double型变量dog的长度为8字节。因此,结构变量u的总长度为12字节。
7.有以下程序段
intj;floaty;
charname[50];
scanf(’’%2d%f%s’’,&j,&y,name);
当执行上述程序段,从键盘上输入555667777abc后,y的值为(C)
A. 55566.0
B. 7777.0
C. 566.0
D. 566777
解析:因为在输入格式控制符中指定变量j的输入格式控制符为”%2d”,即变量i所占的宽度为2,所以变量j只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项C。
8.有以下程序
main() {
int k=5,n=0;
do{
switch(k) {
case 1:case 3:n+=1;k–;break;
default:n=0;k–;
case 2:case 4:n+=2;k–;break;}
printf(\\(B)
A. 0235
B. 235
C. 02356
D. 2356
解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,n=0,k=4,没有break语句,因此执行case2分支语句,n为2,k为3,程序进行第2次循环,执行case 3:n=3,k:2,输出n值为3,柙序进行第3次循环,执行case 3这个分支,结果是n=5,k=1,打印出5;这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束。
9.若有以下程序段:
int r=8;
printf(\\(C)
A. 16
B. 8
C. 4
D. 2
解析:本题考查位运算,属于基础知识。题目中的整型变量8,二进制表达为00001000,右移一位为00000100,即4,C选项正确。
10.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和(D)
A. 编码设计
B. 测试阶段
C. 运行阶段
D. 物理设计
解析:数据库设计目前一般采用生命周期法,即把整个数据库应用系统的开发分解成目标独立的四个阶段。它们分别是需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段。
11.有以下程序
#include<stdio.h>
inta=1,b=2;
yoidfunl(inta,intb)
{printf(’’%d%d’’,a,b);}
yoidfun2( )
{a=3;b=4;}
main( )
{funl(5,6);fun20;
printf(’’%d%d\\
’’,a,b);
}
程序运行后的输出结果是(D)
A. 3456
B. 1256
本文档预览:3600字符,共8316字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载