国家二级(C语言)机试模拟试卷487
选择题
1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是按照“先进后出”的原则组织数据的,入栈的顺序为12345ABCDE,则出栈的顺序应为其逆序,即EDCBA54321。
2.结构化程序设计的基本原则不包括( )。(A)
A. 多态性
B. 自顶向下
C. 模块化
D. 逐步求精
解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
3.若变量都已正确说明,则以下程序段输出结果为( )。
#include<stdio.h>
main()
{char a=’a’;
intb=2;
printf(a>b?’’***a=%d’’:’’###b=%d’’,a,b);
}(D)
A. ***a=3
B. ###b=3
C. ***a=3###b=5
D. 全部错误
解析:本题考查printf函数的格式和三目运算符“?:”的使用。printf函数中格式说明符之前插入的任何字符都原样输出。本题中“a>b”为真,所以返回“***a=97”。
4.有以下程序:
main()
{int k=33;
printf(\\(D)
A. 33,033,0x21
B. 33,033,21
C. 33,041,021
D. 33,41,21
解析:本题考查不同进制间的转换。printf输出函数中输出变量的格式,由输出格式符决定。题中“%o”格式符表示以八进制的形式输出;“%x”格式符表示以十六进制的形式输出。“33”的八进制和十六进制分别是41和21。
5.定义如下变量和数组:
int i,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )。
for(i=0;i<3;i++)printf(\\(C)
A. 159
B. 147
C. 357
D. 369
解析:本题主要考查二维数组的使用。题中利用for循环来输出x数组中的指定元素:①当i=0时,输出x[0|][2]=3:②当i=1时,输出x[1][1]=5;③当i=2时,输出x[2][0]=7。
6.以下叙述中正确的是( )。(C)
A. 语句char a[2]={\\
B. 语句int a[]={0};是不合法的,遗漏了数组的大小
C. 语句int a[8]={0};是合法的
D. 语句char a[3];a=\\
解析:考查一维数组以及字符数组的初始化。初始化的时候可以只给数组的前面一部分元素设定初值,故C正确。字符数组中的每个元素为一个字符,需要用单引号,选项A错。若对数组全部元素赋初值时,可以不指定数组元素的个数,选项B错。定义字符数组时可以将字符串直接赋给该字符数组,其他情况则不可以,选项D错。答案选C。
7.对下图二叉树
(C)
A. DYBEAFCZX
B. YDEBFZXCA
C. ABDYECFXZ
D. ABCDEFXYZ
解析:前序遍历是指在访问根节点、遍历左子树与遍历右子树这三者中,首先访问根节点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则:①访问根节点;②前序遍历左子树;③前序遍历右子树,故答案C正确。
8.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B。
9.结构化程序设计的基本原则不包括( )。(A)
A. 可封装
B. 自顶向下
C. 模块化
D. 逐步求精
解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
10.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。(B)
A. 一对一
B. 一对多
C. 多对一
D. 多对多
解析:因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一问宿舍,所以实体宿舍和学生之间是一对多的关系。
11.以下叙述中正确的是( )。(A)
A. C程序中注释部分可以出现在程序中任意合适的地方
B. C程序的书写格式是固定的,每行只能写一条语句
C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名
D. 在对C语言程序进行编译时,可以发现注释行中的拼写错误
解析:本题考查的是C语言程序设计的初步知识。选项A),程序中/*……*/表示注释部分,注释只是给人看的,对程序的编译和运行不起作用,可以在程序中的任何位置;选项B),C语言的书写格式自由,一行可以写多条语句,一条语句也可以写在不同行上;选项C),一个C程序中必须有且只能有一个由“main”命名的主函数,其他函数由用户自行命名;选项D),程序的注释仅仅是提供阅读之用,并不参与程序的编译,所以编译也就不会发现注释行中的错误。
12.己知下列函数定义:
fun(int*int c,int amint data)
{int k;
for(k=0;k<m*n;k++)
{*b=data;
b++;}
}
则调用此函数的正确写法是(假设变量a的说明为int a[501)( )。(D)
A. fun(*a,4,5,1);
B. fun(&a,4,5,1);
C. fun((int*)a,4,5,1);
D. fun(a,4,5,1);
解析:本题考查函数调用时的参数传递。fun函数的调用形式为fun(int *b,int m,int n,int data),而调用数组时,用数组名表示一个指向数组第一个元素的指针,因此调用时的形式为fun(a,4,5,1)。
13.有以下程序:
#include
struct tt
{Int x;struct tt*y;}*p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{ int i;
p=a
本文档预览:3600字符,共16897字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载