国家二级C语言机试(选择题)模拟试卷338
选择题
1.在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数( )。(C)
A. 不同,但元素的存储顺序与逻辑顺序一致
B. 不同,且其元素的存储顺序可以与逻辑顺序不一致
C. 相同,元素的存储顺序与逻辑顺序一致
D. 相同,但其元素的存储顺序可以与逻辑顺序不一致
解析:在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数相同,在存储空间中是按逻辑顺序依次存放的。
2.下面叙述中正确的是(A)
A. 线性表是线性结构
B. 栈与队列是非线性结构
C. 线性链表是非线性结构
D. 二叉树是线性结构
解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。
3.有以下程序:
#include
int b=2;
int fun(int*k)
{
b=*k+b;
return(b);
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++)
{
b=fun(&a[i])+b;
prinff(“%d”,b);
}
prinff(“\n”);
}
程序运行后的输出结果是( )。(C)
A. 1012
B. 810
C. 1028
D. 1016
解析:因为b是全局变量,所以它的值在整个程序结束才会消失。for循环中,第一次循环,i=2,a[2]=3,所以fun(&a[i]=3+2=5,b=5,所以b:fun(&a[i])+b=5+5=10;第二次循环,b=10,然后fun(&a[i])代入a[3]=4,这时fun(&a[i]=10+4=14,所以b=fun(&a[i])+b=14+14=28。
4.在快速排序法中,每经过一次数据交换(或移动)后( )。(B)
A. 只能消除一个逆序
B. 能消除多个逆序
C. 不会产生新的逆序
D. 消除的逆序个数一定比新产生的逆序个数多
解析:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。快速排序的思想是:从线性表中选取一个元素,设为T,将线性表中后面小于T的元素移到前面,而前面大于T的元素移到后面,结果就将线性表分成两部分(称两个子表),T插入到其分割线的位置处,这个过程称为线性表的分割,然后再用同样的方法对分割出的子表再进行同样的分割。快速排序不是对两个相邻元素进行比较,可以实线通过一次交换而消除多个逆序,但由于均与T(基准元素)比较,也可能会产生新的逆序。
5.有以下程序
#define F(X,Y)(X)*(Y)
main()
{ int a=3,b=4;
printf(’’%d\n’’,F(a++,b++));
}
程序运行后的输出结果是( )。(A)
A. 12
B. 15
C. 16
D. 20
解析:此题考查的是编译预处理命令以及自加运算符。“F(a++,b++)”先取a和b的值,参加运算,再把a和b的值分别加1,所以“F(a++,b++)=F(3,4)=3*4=12”。
6.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列各项中属于应用软件的是( )。(A)
A. 学生成绩管理系统
B. C语言编译程序
C. UNIX操作系统
D. 数据库管理系统
解析:软件按功能可以分为:应用软件、系统软件、支撑软件、操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件,所以B、C、D选项都是系统软件,只有A选项是应用软件。
7.有如下程序段:
int x=12;
double y=3.141593;
printf(“%d%8.6f”,x,y);
其输出结果是( )。(A)
A. 123.141593
B. 12 3.141593
C. 12,3.141593
D. 123.1415930
解析:printf函数中格式字符“%8.6”的含义是:变量y的输出宽度为8(包括小数点),小数点后面保留6位小数,且右对齐,所以选择A选项。
8.下列关于数据库设计的叙述中,正确的是(A)
A. 在需求分析阶段建立数据字典
B. 在概念设计阶段建立数据字典
C. 在逻辑设计阶段建立数据字典
D. 在物理设计阶段建立数据字典
解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。
9.数据库应用系统中的核心问题是(A)
A. 数据库设计
B. 数据库系统设计
C. 数据库维护
D. 数据库管理员培训
解析:在数据库应用系统中的一个核心问题就是设计一个能满足用户要求,性能良好的数据库,这就是数据库设计。所以数据库设计是数据库应用的核心。
10.以下叙述中正确的是(A)
A. 在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符
B. 只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度
C. scanf函数中的字符串,是提示程序员的,输入数据时不必管它
D. 复合语句也被称为语句块,它至少要包含两条语句
解析:输入函数的调用格式:scanff格式控制,输入项1,输入项2….)格式控制的土要作用是指定输入时的数据转换格式,格式串中,必须含有与输入项一一对应的格式转换说明符选项A正确,在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度,选项B错误,scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用printf函数输出,选项C错误,复合语句还可以是空语句呢,并没有规定语句条数,选项D错误。
11.软件设计中模块划分应遵循的准则是(B)
A. 低内聚低耦合
B. 高内聚低耦合
C. 低内聚高耦合
D. 高内聚高耦合
解析:耦合性与内聚性是模块独立性的两个定性标准。一般一个较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
12.若有以下程序
#include
main(){
int a=1,b=2,c=3,d=4,r=0;
if(a!=1);else r=1;
if(b==2)r+=2;
else;
if(c!=3)r+=3;
本文档预览:3600字符,共11609字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载