国家二级(C语言)机试模拟试卷457
选择题
1.下列叙述中正确的是( )。(A)
A. 顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的
B. 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C. 顺序存储结构能存储有序表,链式存储结构不能存储有序表
D. 链式存储结构比顺序存储结构节省存储空间
解析:链式存储结构既可以针对线性结构,也可以针对非线性结构,所以B与C错误。链式存储结构中每个节点都由数据域与指针域两部分组成,增加了存储空间,所以D错误。
2.下列定义变量的语句中错误的是( )。(D )
A. im_int;
B. double int_;
C. char For;
D. float US$:
解析:C语言规定,变量的标识符只能由字母、数字和下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项A)定义的变量标识符int和选项B)定义的变量标识符int与C语言的关键字int是不同的,是正确的变量标识。选项C)定义的变量标识符.For·与C语言中的关键字for是两个不同的标识符,所以选项C)是正确的,而选项D)包含有特殊字符$,因而其不符合C语言的变量命名规定。
3.有以下程序:
#include<stdio.h>
void fun(int a[],int n)
{int i,t;
for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{int k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++)printf(\\(A)
A. 321678
B. 876543
C. 1098765
D. 345678
解析:本题中的函数fun()的功能是将数组k中前5个元素倒序,所以返回后数组k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印输出k[2]到k[7]元素的值,即321678,所以选择A。
4.设有定义:char p[]={’1’,’2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是( )。(A)
A. sizeof(p)
B. sizeof(char)
C. sizeof(*q)
D. sizeof(p[0])
解析:根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。
5.下面函数的功能是( )。
SSS(S,t)
char*s,*t;
{while(*s);
while(*t)
*(s++)=*(t++);
return S;
}(D)
A. 将字符串S复制到字符串t中
B. 比较两个字符串的大小
C. 求字符串的长度
D. 将字符串t续接到字符串S中
解析:本题考查指针变量的运用。本题中的函数实质上是将字符串t续接到字符串s中。
6.为了使模块尽可能独立,要求( )。(B)
A. 内聚程度要尽量高,耦合程度要尽量强
B. 内聚程度要尽量高,耦合程度要尽量弱
C. 内聚程度要尽量低,耦合程度要尽量弱
D. 内聚程度要尽量低,耦合程度要尽量强
解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
7.关于C语言程序的下列说法中,正确的是( )。(B)
A. 函数的定义可以嵌套,但函数的调用不可以嵌套
B. 函数的定义不可以嵌套,但函数的调用可以嵌套
C. 函数的定义和调用均不可以嵌套
D. 函数的定义和调用均可以嵌套
解析:函数定义都是在函数外部进行的,而函数调用是在函数内部发生的,所以函数的定义不可以嵌套,但函数的调用可以嵌套。
8.以下选项中正确的语句组是( )。(D)
A. char s[]; s=\\
B. char *s; s={\\
C. char s[10] s=\\
D. char *s; s=\\
解析:本题考查数组和字符串的赋值。选项A中数组s没有明确其大小就赋值是错误的。选项B中不能有大括号,选项C中的写法应该为{’H’’E’’L’’L’’O’’!’}。
9.内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是( )。(B)
A. 顺序内聚
B. 偶然内聚
C. 时间内聚
D. 逻辑内聚
解析:内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:
系。内聚有如下种类,它们之间的内聚度由弱到强排列:
偶然内聚——模块中的代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块为巧合强度模块。
逻辑内聚——这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的参数来确定该模块应完成哪一种功能。
时间内聚——这种模块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。
过程内聚——如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。
通信内聚——这种模块除了具有过程内聚的特点外,还有另外一种关系,即它的所有功能都通过使用公用数据而发生关系。
顺序内聚——如果一个模块内各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。
功能内聚——如果一个模块包括为完成某一具体任务所必需的所有成分,或者说模块中所有成分结合起来是为了完成一个具体的任务,此模块则为功能内聚模块。
10.有以下程序
#include
void main()
{
char s[]={\\(A )
A. 0
B. 2
C. 3
D. 5
解析:这段程序的功能求出字符串s中字符的.ASCII码小于小写字符a并且大于小写字符z的字符的个数。因为小写字符z的ASCII码大于小写字符a的ASCIl码,所以满足a的ASCII码并且大于z的的ASCII码的字符是不存在的,所以输出0。
11.交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。(B)
A. &
B. ^
C. ‖
D. ~
解析:按逻辑位运算的特定作用主要有3点:①用按位与运算将特定位清0或保留特定位;②用按位或运算将特定的位置设置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。<
本文档预览:3600字符,共17206字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载