国家二级(C语言)机试模拟试卷459
选择题
1.下列关于线性链表的描述中,正确的是( )。
Ⅰ、只含有一个指针域来存放下一个元素地址
Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)
Ⅲ、结点由两部分组成:数据域和指针域。(D)
A. 仅Ⅰ、Ⅱ
B. 仅Ⅰ、Ⅲ
C. 仅Ⅱ、Ⅲ
D. 全部
解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
2.下列关于线性链表的描述中,正确的是( )。
I、只含有一个指针域来存放下一个元素地址
II、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)
III、结点由两部分组成:数据域和指针域。(D)
A. 仅I、II
B. 仅I、III
C. 仅II、III
D. 全部
解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域:另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
3.为了使模块尽可能独立,要求( )。(B)
A. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B. 模块的内聚程度要尽量高,且各模块问的耦合程度要尽量弱
C. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
解析:系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。
4.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。
5.有以下函数定义:
int fun(double a,double b)
{return a*b;}
若以下选项中所用变量都已正确定义并赋值,错误的函数调用是( )。
C
解析:本题考查函数调用时的参数传递。选项C中第一个参数的表达式不正确,因此不能得到正确的结果。
6.下述程序的输出结果是( )。
#include
void main()
{ int a[20],*p[4];
int i,k=0;
for(i=0;i<20;i++)
a[i]=i;
for(i=0;i<4;i++)
p[i]=&a[i*i+1];
for(i=0;i<4;i++)
{ k=k+*p[i];}
printf(\\(B )
A. 10
B. 18
C. 6
D. 数组元素引用不合法,输出结果不定
解析:第一个for循环,给数组a的20个元素分别赋值0—19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p 中元素的值进行累加,k=1+2+5+10=18。
7.若二维数组a有m列,则在a[i][j]前的元素个数为( )。(B)
A. j*m+i
B. i*m+j
C. j*m+i+1
D. i*m+j+1
解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是i,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。
8.有以下程序:
#inc1ude
#inc1ude
struct A
{int a;char b[10];double c;};
void f(struct A*t);
main()
{ struct A a={1001,\\(B)
A. 1001, zhangDa, 1098.0
B. 1002, ChangRong, 1202.0
C. 1001, ChangRong, 1098.0
D. 1002, zhangDa, 1202.0
解析:本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。
9.有以下程序:
#include<stdio.h>
main()
{
int n=2,k=0;
while(k++&&n++>2);
printf(\\(D)
A. 0 2
B. 1 3
C. 5 7
D. 1 2
解析:(表达式1)&&(表达式2)中,如果表达式1为假或0,那么表达式2就不会被执行。本题中首先进入while的判断语句,执行k++和n++。k++为零,不满足循环条件,所以n++不会被执行,while循环结束后,k经过运算自增为1,n没有进行运算,仍为2。
10.在printf的格式字符中,e格式字符的作用是( )。(C)
A. 以十六进制无符号形式输出整数
B. 以带符号的十进制形式输出整数
C. 以指数形式输出实数
D. 以字符形式输出,且只输出一个字符
解析:本题考查printf函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。
11.fgets(str,n,fp)函数从文件中读入一个字符串,以下错误的叙述是( )。(C)
A. 字符串读入后会自动加入’\0’
B. fp是指向该文件的文件型指针
C. fgets函数将从文件中最多读入n个字符
D. fgets函数将从文件中最多读入n-1个字符
解析:字符串输入函数fgets()的调用形式为:fgets(s,n,fp);s可以是一个字符数组名,或是指向字符串的指针;n为要读取的最多的字符个数:fp是指向该文件的文件型指针;字符串输入函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串存放到字符数组s中。
12.待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取
本文档预览:3600字符,共15794字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载