国家二级C语言机试(选择题)模拟试卷266
选择题
1.下列叙述中正确的是(B)
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 以上都不正确
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
2.若变量已正确定义为int型,要通过语句scanf(\\(D)
A. □□□1,2,3
B. 1,□□□2,□□□3
C. 1,2,3
D. 1□2□3
解析:本题t要考查scanf函数的输入格式问题。
scanf函数的一般形式为:scanfi(格式控制字符串,地址1。地址2,…);
格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成:
①格式说明符由“%”和格式字符组成,如%c,%d,%s,%f等。其作用是将输入的数据转换为指定的格式,赋给scanf的二个参量(是地址1)所指定的内存单元(可能一次使用多个)中。格式说明以“%”字符为标志。
②普通字符,是需要用户在输入时原样输入的字符。
在本题中格式控制字符串为“%d,%d,%d”,表示按十进制输入三个数据。要求在输入数据时,两个数据间一定以一个逗号“,”作为间隔符。
3.若变量已正确定义为int型,要通过语句scanf(\\(D)
A. □□□1,2,3
B. 1,□□□2,□□□3
C. 1,2,3
D. 1□2□3
解析:本题主要考查scanf函数的输入格式问题。
scanf函数的一般形式为:scanf(格式控制字符串,地址1,地址2,…);
格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成:
①格式说明符由“%”和格式字符组成,如%c,%d,%s,%f等。其作用是将输入的数据转换为指定的格式,赋给scanf的二个参量(是地址1)所指定的内存单元(可能一次使用多个)中。格式说明以“%”字符为标志。
②普通字符,是需要用户在输入时原样输入的字符。
在本题中格式控制字符串为“%d,%d,%d”,表示按十进制输入三个数据。要求在输入数据时,两个数据间一定以一个逗号“,”作为间隔符。
4.若以下选项中的变量a,b,y均已正确定义并赋值,则语法正确的switch语句是
A
解析:使用switch语句直接处理多个分支,其一般形式为:
switch(表达式)
{
case常量表达式l:
语句1:
break;
case常量表达式2:
语句2:
break;
case常量表达式n:
语句n:
break;
default:
语句n+1:
break;
}
switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句:若圆括号中表达式的值与所有ease后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句。
对于选项B),case语句和常量之间没有空格,而选项C)中的case后面为变量,选项D)中switch后面没给出圆括号。
5.有以下函数:
int fun(char*s)
{
char*t=s:
while(*t++);
return(t-s);
}
该函数的功能是( )。(C)
A. 计算s所指字符串的长度
B. 比较两个字符串的大小
C. 计算s所指字符串占用内存字节的个数
D. 将s所指字符串复制到字符串t中
解析:首先char*s接受一个字符型数组的首地址,并将这个首地址赋给另一个字符型指针char*t,while(*t++)不断循环直到*t为’\0’,循环结束,此时指针t指向结束标记’\0’后,所以return(t-s)返回的是字符串s所占的字节数。
6.下列各项中不属于软件设计阶段任务的是( )。(A)
A. 制订软件确认测试计划
B. 数据库设计
C. 软件总体设计
D. 算法设计
解析:软件设计阶段的主要任务包括两个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成;二是进行软件的系统分析,了解用户的需求,定义应用功能,详细估算开发成本和开发周期。
7.软件生存周期中,解决软件“做什么”的阶段是(A)
A. 需求分析
B. 软件设计
C. 软件实现
D. 可行性研究
解析:
8.有以下程序
#include<stdio.h>
main( )
{inta[]={10,20,30,40},*p=a,i;
for(i=0;i<=3;i++){a[i]=*p;p++;)
printf(’’%d\\
’’,a[2]);
}
程序运行后的输出结果是(B)
A. 20
B. 30
C. 10
D. 40
解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。
9.对软件系统总体结构图,下面描述中错误的是(B)
A. 深度等于控制的层数
B. 扇入是一个模块直接调用的其他模块数
C. 扇出是一个模块直接调用的其他模块数
D. V一定是结构图中位于叶子结点的模块
解析:在软件工程中,模块的扇入是指有多少个上级模块调用它;模块的扇出是指该模块直接调用的下级模块的个数。
10.以下叙述中正确的是(B)
A. 下面的语句用赋初值方式来定义字符串,其中,’\\\\0’是必须的charstrl[]={’s’,’t’,’r’,’1’,’\\\\0’);
B. 有定义语句:charstr1[]=’’str1’’,数组str1将包含4个元素
C. 字符串常量’’str1’’的类型是:字符串数据类型
D. 字符数组的每个元素可存放~个字符,并且最后一个元素必须是’\\\\0’字符
解析:选项B中除了字符串中实际字符之外,还要存储字符串结束标志,应为5个元素。在C语言中没有字符串数据类型,因此选项C不正确,选项D字符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。
11.表达式3.6-5/2+1.2+5%2的值是(C)
A. 4.18
B. 3.3
C.
本文档预览:3600字符,共7737字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载