国家二级C语言机试(选择题)模拟试卷301
选择题
1.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)0的程序段是(D)
A. n=0;while((ch=getchar())!=’\n’)n++;
B. n=0;while(getchar() !=’\n’)n++;
C. for(n=0;getchar()!=’\n’;n++);
D. n=0;for(ch=getchar();ch!=’\n’;n++);
解析:本题主要考查循环的使用。选项A中,首先把输入的字符放到ch变量中,然后判断ch是否为回车符,如果不是则n增加,循环结束条件是输入的是回车符;选项B中,直接判断getchar。函数的返回值是否是回车符,如果不是则n增加,输入回车符循环结束;选项C使用for循环,n的初值为0,每次循环n增加1,循环的结束条件是输入回车符:选项D中for循环的初始条件ch值为输入的字符,只有一次输入,不能统计输入的字符数,如果第一次输入的不是回车符循环不能结束。
2.在长度为97的顺序有序表中作二分查找,最多需要的比较次数为(A)
A. 7
B. 96
C. 48
D. 6
解析:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。最多比较次数的计算方式:k=log2n。其中n代表长度,k为比较次数。本题中可以计算出k=7。
3.有以下程序:
#include<stdio.h>
int fun(char *s)
{
char *p=s;
while(*p!=0)P+ +;
return(p—s);
}
main( )
{
printf(″%d\n″,fun(″goodbye!″));
}
程序的输出结果是( )。(D)
A. 0
B. 6
C. 7
D. 8
解析:本题主要考查函数定义及调用,以及while循环语句。执行fun函数后,首先找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的长度,因此本题答案为8。
4.学生和课程的关系模式定义为:
S(S#,Sn,Sd,Dc,sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);
C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课);
SC(S#,C#,G)(其属性分别学号、课程号和成绩)。
关系中包含对主属性传递依赖的是( )。(C)
A. S#→Sd
B. S#→Sd,(S#,C#)→G
C. S#→Sd,Sd→Dc
D. C#→P#,(S#,C#)→G
解析:关系SC的主属性为(S#、C#),但在SC中S#(学号)单独就可以决定Sd(所在系),Sd(所在系)可决定Dc(所在系的系主任),故对主属性传递依赖的是S#→Sd,Sd→Dc。
5.在面向对象方法中,不属于“对象”基本特点的是(A)
A. 一致性
B. 分类性
C. 多态性
D. 标识唯一性
解析:对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独立性。
6.下面不属于软件工程的3个要素是(D)
A. 工具
B. 过程
C. 方法
D. 环境
解析:软件工程的3个要素是工具、过程和方法。
7.支持子程序调用的数据结构是( )。(A)
A. 栈
B. 树
C. 队列
D. 二叉树
解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,所以A选项正确。
8.运行下面的程序,输入字符串“Microsoft Visual Studio\\(C)
A. Microsoft Visual Studio
B. M
C. Microsoft
D. MicrosoftVisualStudio
解析:当从键盘输入“MicrosoftVisual Studio”时,由于“scanf”输入函数的特点是遇到空格时结束读入字符,因此,该程序只将“Microsoft”这9个字符送到了字符数组str中,并在其后自动加上结束符“\0”。
9.有以下程序,程序运行后的输出结果是
main(){int x=35,B;
char z=’B’:
B=((x)&&(z<’b’));
printf(\\(C)
A. 0
B. 35
C. 1
D. 66
解析:表达式((x)&&(z<’b’)),x为35非零,考虑表达式z<’b’,成立,则B的值为1。
10.以下叙述中正确的是( )。(A)
A. 在C语言中,预处理命令行都以#开头
B. 预处理命令行必须位于C源程序的起始位置
C. #include必须放在C程序的开头
D. C语言的预处理不能实现宏定义和条件编译的功能
解析:c语言中,凡是以“#”开头的都被称为编译预处理行,选项A正确;预处理行可以放在C源程序的任何位置,习惯放在起始位置,选项B错误;语句“#include”必须放在使用文件stdio.h中相关方法的语句之前,但是不一定非要放在C程序开头,选项C错误;预处理包括宏定义、文件包含和条件编译等,选项D错误。答案选A。
11.下列叙述中正确的是(A)
A. 软件过程是把输入转化为输出的一组彼此相关的资源和活动
B. 软件过程是软件开发过程
C. 软件过程是软件维护过程
D. 软件过程是软件开发过程和软件维护过程
解析:软件过程是指软件整个生命周期,从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。一个软件过程定义了软件开发中采用的方法,但软件过程还包含该过程中应用的技术一一技术方法和自动化工具。过程定义一个框架,为有效交付软件工程技术,这个框架必须创建。软件过程构成了软件项目管理控制的基础,并且创建了一个环境以便于技术方法的采用、工作产品(模型、文档、报告、表格等)的产生、里程碑的创建、质量的保证、正常变更的正确管理。
12.已知下列函数定义:
fun(int *b,int c,int d)
{ int k;
for(k=0;k<c*d;k++)
{ *b=c+d;
b++;}}
则调用此函数的正确写法是(假设变量a的说明为int a[10])( )。(C)
A. fun(*a,6,14);
B. fun(&a,6,8);
C. fun(a,8,4);
D. fun((int)a,8,6);
解析:本题考查函数调用时的参数传递。fun函数的调用形式为fun(int*b,int c,int d)。调用数组时,用数组名表示一个指向数组的第一个元素的指针,因此,调用时的形式为“fun(a,8,4)”。
13.
本文档预览:3600字符,共11608字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载