国家二级(C语言)机试模拟试卷517
选择题
1.算法的有穷性是指( )。(A)
A. 算法程序的运行时间是有限的
B. 算法程序所处理的数据量是有限的
C. 算法程序的长度是有限的
D. 算法只能被有限的用户使用
解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。
2.程序流程图中带有箭头的线段表示的是( )。(C)
A. 图元关系
B. 数据流
C. 控制流
D. 调用关系
解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C.
3.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为( )。(C)
A. 6
B. 8
C. 9
D. 12
解析:R为n元关系,有p个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。
4.下列不合法的用户标识符是( )。(C)
A. j2_KEY
B. Double
C. 4d
D. _8_
解析:在C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。
5.以下关于C语言的叙述中正确的是( )。(A )
A. 预处理命令通常位于函数体外面,但也可以位于函数体中间
B. C语言中的变量定义须在其他语句之前
C. 在C语言程序的书写中,一个语句必须单占一行
D. 一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的main函数
解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以由一个或多个源文件组成,但仅可以有一个main函数。
6.关于“while(条件表达式)循环体”,以下叙述中正确的是( )。(B)
A. 循环体的执行次数总是比条件表达式的执行次数多一次
B. 条件表达式的执行次数总是比循环体的执行次数多一次
C. 条件表达式的执行次数与循环体的执行次数一样
D. 条件表达式的执行次数与循环体的执行次数无关
解析:考查while循环的执行过程。先计算括号内表达式的值,若不为0则执行循环体语句,若为0则跳出wlaile循环,所以条件表达式的执行次数总是比循环体的执行次数多一次.答案选B。
7.语句“printf(\\(C)
A. a\bhow\’are\’y\\bou
B. a\bhow\’are\’y\bou
C. how’are’you
D. ahow’are’y\bou
解析:“\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\b”格式符前面的字母不能输出;“\’”格式符表示输出单引号字符;“\\”格式符表示输出反斜线字符。
8.以下程序的输出结果是( )。
#include
main()
{ int a=8,b=6,m=1;
switch(a%4)
{ case 0:m++;
break;
case 1:m++;
switch(b%3)
{default:m++;
case 0:m++:break;
}
}
printf(”%d\\
”,m);}(B )
A. 1
B. 2
C. 3
D. 4
解析:本题考查switch语句。因为a=8,a%4=0,所以执行case 0后面的语句,将m加1,遇到break语句跳出switch。
9.有下列程序段:
typedef struct NODE
{int num;stmct NODE*next;
}OLD;
下列叙述中正确的是( )。(C)
A. 以上的说明形式非法
B. NODE是一个结构体类型
C. OLD是一个结构体类型
D. OLD是一个结构体变量
解析:C语言允许用typedef说明一种新类型名,其一般形式为:typedef类型名标识符。typedef语句的作用仅仅是使“标识符”来代表已存在的“类型名”,并未产生新的数据类型。原有类型名依然有效。此题中,用使typedef定义了新的类型OLD结构,所以OLD为结构体类型。
10.有以下程序:
#include<stdio.h>
int fun(int(*s)[4],int n,int k)
{int m,i;
m=s[0][k];
for(i=1;i<n;i++)
if(s[i][k]>m)
m=s[i][k];
return m;
}
main()
{int a[4][4]={{1,2,3,4},
{11,12,13,14},
{2l,22,23,24},
{3l,32,33,34}};
printf(\\(C)
A. 4
B. 34
C. 31
D. 32
解析:本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。
11.某二叉树有5个度为2的节点,则该二叉树中的叶子节点数是( )。(C)
A. 10
B. 8
C. 6
D. 4
解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个,所以本题中是5+1=6个。
12.在C语言中,只有在使用时才占用内存单元的变量的是( )。(A)
A. auto和register
B. extern和register
C. auto和static
D. static和register
解析:C语言中,动态存储区域中存放的变量在使用时才分配内存空间。auto变量的存储单元是分配在内存的动态存储区中,每当进入函数体时自动分配存储单元。register变量也是自动类变量。static说明的变量为静态变量,静态变量在内存的静态存储中占据着永久的存储单元,直至程序运行结束。extern说明的变量为外部变量,属于全局变量,全局变量在整个程序运行期间都占用内存空间。
13.以下说法正确的是( )。(B)
A. 宏定义是C语句,要在行末加分号
B. 可以使用#undefine提前结束宏名的使用
本文档预览:3600字符,共13855字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载