国家二级C语言机试(选择题)模拟试卷313
选择题
1.计算机软件的构成是( )。(D)
A. 源代码
B. 程序和数据
C. 程序和文档
D. 程序、数据及相关文档
解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。答案选D。
2.下列叙述中正确的是( )。(A)
A. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B. 循环队列中的元素个数随队头指针的变化而动态变化
C. 循环队列中的元素个数随队尾指针的变化而动态变化
D. 以上说法都不对
解析:循环队列中的元素个数随队头指针与队尾指针的变化而动态变化,选A。
3.结构化程序所要求的基本结构不包括( )。(B)
A. 顺序结构
B. GOTO跳转
C. 选择(分支)结构
D. 重复(循环)结构
解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
4.语句strlen(\\(B)
A. 4
B. 6
C. 11
D. 12
解析:字符串的字符’\0’,它在C语言的字符串中具有特殊的意义,字符’\0’标志字符串的结束,计算串长时,只计算字符’\0’之前的字符数量,而不计算’\0’之后有什么字符。
5.有以下程序:
#include<stdio.h>
main( )
{
char c;
c=getchar( );
d0{
putchar(c+ +);
}while((c=getchar( ))!=′#′);
}
程序运行时从第一列开始输入abcdefg##<回车>,则输出结果是( )。(A)
A. abcdefg
B. bcdefgh
C. abcdefg#
D. bcdefgh#
解析:运算符“+ +”放在变量后面时,先参与其他操作,再对变量+1。putchar(c+ +)表示先输出当前c值,再对c值+1。当输入abcdef##时,在while语句中,程序输入#时循环退出。因此输出为abcdefg,故A选项正确。
6.下面描述中正确的是( )。(A)
A. 预处理命令可以放在程序中的任何位置
B. 预处理命令结尾需要加分号
C. C语言中预处理是指完成宏替换和文件包含指定的文件的调用
D. 预处理指令只能位于C源程序文件的首部
解析:本题考查C语言编译预处理命令的相关知识。C语言中的预处理命令完成文件读入和宏替换等任务,另外还可以完成对编译的一部分控制,如强行中断编译过程以及条件编译等过程。故选项C)错误。在程序的任何位置都可以使用预处理命令,故答案D)也错误。预处理命令都必须以“撑”号开始,结尾不加分号,故答案B)也错误。
7.下列叙述中正确的是(A)
A. 在栈中,栈顶指针的动态变化决定栈中元素的个数
B. 在循环队列中,队尾指针的动态变化决定队列的长度
C. 在循环链表中,头指针和链尾指针的动态变化决定链表的长度
D. 在线性链表中,头指针和链尾指针的动态变化决定链表的长度
解析:栈是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶;表的另一端称为栈底。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。在栈中,栈顶指针动态反映了栈中元素的变化情况。所以选项A正确。
8.设二叉树的后序序列为DGHEBIJFCA,中序序列为DBGEHACIFJ。则前序序列为(A)
A. ABDEGHCFIJ
B. JIHGFEDCBA
C. GHIJDEFBCA
D. ABCDEFGHIJ
解析:后序遍历中,最后一个字母是根结点,也就是A是根结点:在中序遍历中,根结点前面的是左予树、后面的是右子树。后序中C在A前面、中序中C在A的后面,说明C是A的右结点;后序中F在C的前面、中序中在C后面,且后序和中序中,I均在F前而由此可确定,I为F的左结点,F为C的右结点。同C理J为F的右结点。后续中B为左子树的根结点,因此B为A的左结点,以此划分,在中序中B前面的D为左结点,后面的GEH为右子树,后序中,E在最后,应为剩下3个结点的根结点,也就是B的右子树,再根据中序巾的顺序,可得出G为E的左结点,H为E的右结点。由此可画出这个二叉树,然后根据二叉树可的前序序列为ABDEGHCFIJ。
9.数据库管理系统中负责数据模式定义的语言是( )。(A)
A. 数据定义语言
B. 数据管理语言
C. 数据操纵语言
D. 数据控制语言
解析:数据库管理系统一般提供相应的数据语言,它们分别是:数据定义语言,负责数据的模式定义与数据的物理存取构建;数据操纵语言,负责数据的操纵,包括查询及增、删、改等操作;数据控制语言,负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
10.己知一个文件中存放若干工人档案记录,其数据结构如下:
struct a
{ char number[100];
int age;
float p[6];};
定义一个数组:struct a number[10];
假定文件己正确打开,不能正确地从文件中读入10名工人数据到数组b中的是( )。(B)
A. fread(b,sizeof(struct a),10,fp);
B. for(i=0;i<10;i++)
fread(b[i],sizeof(struct a),1,fp);
C. for(i=0;i<10;i++)
fread(b+i,sizeof(struct a),1,fp);
D. for(i=0;i>5;i+=2)
fread(b+i,sezeof(struct a),2,fp);
解析:数据块输入/输出函数的调用形式为;fread(buffer,size,count,fp)。
fread函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。选项B中b[i]是一个数组,不是指针,需改为&b[i]。注意:完成一次读操作(1jread())后,如果没有关闭流(fclose()),则指针(FILE *fp)自动向后移动前一次读写的长度,不关闭流则继续下一次读操作,接着上次的输出继续输出。
11.以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是(C)
A. if((a>b)Tl(b>c))k=1;elsek=0;
B. if(a<=b)k=0;elseif(b<=c)k=1;
C. if((a>b)&&(b>c))k=1;elsek=0;
D. if(a>b)k=1;elseif(b>c)k=1;elsek=0;
解析:题干中的表达式的功能是当a>b并且b>c时,变量k的值等于1,其余情况下,变量k的值都是等于0。
12.有以下程序≠}include ,
本文档预览:3600字符,共11860字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载