国家二级C语言机试(选择题)模拟试卷255
选择题
1.下列叙述中正确的是(D)
A. 算法就是程序
B. 设计算法时只需要考虑数据结构的设计
C. 设计算法时只需要考虑结果的可靠性
D. 以上三种说法都不对
解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是订效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设汁算法时不仪要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
2.下列关于线性链表的叙述中正确的是( )。(C)
A. 各数据节点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B. 各数据节点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C. 进行插入与删除时,不需要移动表中的元素
D. 以上说法均不正确
解析:一般来说,在线性表的链式存储结构中,各数据节点的存储序号是不连续的,并且各节点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变节点的指针域即可。
3.下述程序的输出结果是( )。
#include<stdio.h>
void main()
{ int a[5]={1,2,3,4,5};
int *p=a,**q=&p;
printf(’’%d’’,*(p++));
printf(’’%d’’,**q);
}(D)
A. 22
B. 11
C. 34
D. 12
解析:。程序首先定义了一个指向一维数组a的指针p,一个指向指针变量p的指针变量q,输出*(p+)是先输出*p即a[0]的值,再将指针p指向数组的下一个元素a[1],输出**q是输出指针p所指向单元的内容,即a[1]的值。
4.若有以下程序段:
struct st
{ int n;
int *m;};
int a=2,b=3,c=5;
struct
st s[3]=({101,&a},{102,&c},{103,&b}};
main()
{ struct st *p;
p=s;
…}
则以下表达式中值为5的是( )。(D)
A. (p++)->m
B. *(p++)->m
C. (*p)-m
D. *(H_p)->m
解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变量s的指针p,要使表达式的值为5,就应该引用s[1].m的值,使指针p指向s[1],++p可以实现将p指针加1,指向s[1]。
5.设有表示学生选课的3张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。(C)
A. 课号,成绩
B. 学号,成绩
C. 学号,课号
D. 学号,姓名,成绩
解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C选项。
6.有以下程序
#define F(X,Y)(X)*(Y)
main()
{ int a=3,b=4;
printf(\\(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”。
7.下面描述中,不属于软件危机表现的是(A)
A. 软件过程不规范
B. 软件开发生产率低
C. 软件质量难以控制
D. 软件成本不断提高
解析:软件危机主要表现在以下6个方面:
①软件需求的增长得不到满足。
②软件开发成本和进度无法控制。
③软件质量难以保证。
④软件不可维护或维护程度非常低。
⑤软件的成本不断提高。
⑥软件开发生产率的提高赶不上硬件的发展和应用需求增长。
8.占构化程序设计的基本原则不包括(A)
A. 多元性
B. 自顶向下
C. 模块化
D. 逐步求精
解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句,其中不包括多态性。
9.以下程序段完全正确的是(A)
A. int k,*p=&k;scanf(\\
B. int*p;scanf(\\
C. int*p;scanf(\\
D. int k,*p;*p=&k;scantf(\\
解析:选项B)没有对指针进行初始化,无效指针。选项C)错在没有对指针进行初始化,无效指针,并且在scanf(\\
10.下列关于数据库设计的叙述中,正确的是(A)
A. 在需求分析阶段建立数据字典
B. 在概念设计阶段建立数据字典
C. 在逻辑设计阶段建立数据字典
D. 在物理设计阶段建立数据字典
解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。
11.合法的C语言数值常量是( )。(A)
A. 21.0 Xa33 4.5e0
B. 018.5e-3-0xf
C. .134 4el.5 0abc
D. 0x8A 10,000 3.e5
解析:C语言常量数制中的八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B中,018是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整,而选项C中4e1.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。
12.以下数组定义中错误的是
B
解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行的初始化;③部分数组元素初始化;④省略第一维的定义,不省略第一维的定义。在选项A)中赋值号左边定义了一个3行2列的二维数组,而右边用2行3列的数字进行赋初值。所以出现了边界的越界溢出而出错。
13.下列选项中,不能用作标识符的是(D)
A. _1234
B. _1_2
C. int_2_
D. 2_int_
解析:C语言中标识符必须以字母或者下划线开始,选项D)中是以数字开始的不能作为标识符。
14.若有以下程序段
char str[4][12]={\\(A)
A. strp
B. str[0]
C. strp[3]
D. *strp
本文档预览:3600字符,共6817字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载