成才教育内部资料 0791-6290062 版权所有 翻印必究
类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。
(12)B
【解析】 C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。
(13)B
【解析】 C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
(14)A
【解析】 在C语言中,\运算符两侧的运算数必须是整型。
(15)A
【解析】 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)和D)错误。\运算符两侧都应当是整型数据,选项B)错误。
(16)D
【解析】 输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。
(17)B
【解析】 C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。
(18)B
【解析】 满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为\真\。
(19)B
【解析】 条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达
16
式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值,注意++、--的用法。
(20)B
【解析】 在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。
(21)B
【解析】 本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。
(22)B
【解析】 本题中,\表示逻辑非运算符,\表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。
(23)C
【解析】 对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。
(24)A
【解析】 数组c[][4]表示一个4行4列数组,c[2][2]表示第3行第3列上的元素62,*(*(c+1)+1))表示第2行第2列上的元素6,通过十六进制输出为3e,6。
(25)C
【解析】 选项A)char *a;*a=\应改为?a=china?;,选项B)应该是char str[6];D)项表述方法有错误。
(26)D
【解析】 C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。
(27)D
【解析】 在格式输入中,要求给出的是变易的地址,而D)答案中给出的s[1]是一个值的表达式。
(28)B
【解析】 根据宏替换的替换规则,我们可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。
成才教育内部资料 0791-6290062 版权所有 翻印必究
(29)D
【解析】 选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D)C语言规定,不能把共用体变量作为函数的参数。
(30)D
【解析】 将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。
(31)D
【解析】 通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。
(32)C
【解析】 函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。
(33)A
【解析】 本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用\留下\字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\\0'。
(34)A
【解析】 本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。
(35)C
【解析】 本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。
17
(36)B
【解析】 结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。
(37)C
【解析】 这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。
(38)B
【解析】 本题考查两个位运算符。
按位异或运算符\是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为1。
左移运算符\是双目运算符,其功能把\\左边的运算数的各二进位全部左移若干位,由\右边的数指定移动的位数,高位丢弃,低位补0,并且\运算符的优先级于\。
(39)A
【解析】 在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。
(40)B
【解析】 本题考查的是指向函数的指针。语句 int (* f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。
二、选择题
(1)【1】 输出
【解析】 软件测试用例是为了有效发现软件缺陷面编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。
(2)【2】 前件
【解析】 在树形结构中,每一个结点只有一个前件,称为父结点;没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点;没有后件的结点称为叶子结点。
(3)【3】 存储结构
【解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,
成才教育内部资料 0791-6290062 版权所有 翻印必究
不仅要存放各数据元素的信息,还需要存放各数据元素之间前后件关系的信息。
(4)【4】 一对多(或1∶N)
【解析】 两个实体集间的联系实际上是实体集间的函数系,这种函数关系可以有3种,即一对一(1∶1)的联系、一对多(1∶N)或多对一(N∶1)的联系和多对多(N∶N)的联系。
(5)【5】 概念设计阶段
【解析】 数据库设计分为以下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。
(6)【6】 N
【解析】 函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。
(7)【7】 字符串a和b的长度之和
【解析】 本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。
(8)【8】!= 【9】 return j 【解析】 本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以a[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。
(9)【10】 a=2,b=1
【解析】 本题考查了 switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的 case 2:分支,最后a和b的值分别为2和1。
(10)【11】 31 【解析】 在函数调用时,形参值的改变,不会改变实参值。
(11)【12】 *s-*t
【解析】 两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,
18
若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在s > t时,返回正值,当s < t时,返回负值。
(12)【13】 22
【解析】 在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]...b[9]的值相加,结果为22。
(13)【14】 PER
【解析】 本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。
(14)【15】 “filea.dat”,“r”
【解析】 fopen函数的调用方式通常为 fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入 \。
成才教育内部资料 0791-6290062 版权所有 翻印必究
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)软件是指
A)程序 B)程序和文档 C)算法加数据结构 D)程序、数据与相关文档的完整集合
(2)检查软件产品是否符合需求定义的过程称为 A)确认测试 B)集成测试 C)验证测试 D)验收测试
(3)以下不属于对象的基本特点的是
A)分类性 B)多态性
C)继承性 D)封装性
(4)在设计程序时,应采纳的原则之一是 A)不限制goto语句的使用 B)减少或取消注解行 C)程序越短越好
19
D)程序结构应有助于读者理解
(5)下列叙述中正确的是
A)程序执行的效率与数据的存储结构密切相关 B)程序执行的效率只取决于程序的控制结构 C)程序执行的效率只取决于所处理的数据量 D)以上三种说法都不对
(6)数据结构中,与所使用的计算机无关的是数据的 A)存储结构 B)物理结构
C)逻辑结构 D)物理和存储结构
(7)线性表的顺序存储结构和线性表的链式存储结构分别是
A)顺序存取的存储结构、顺序存取的存储结构 B)随机存取的存储结构、顺序存取的存储结构 C)随机存取的存储结构、随机存取的存储结构 D)任意存取的存储结构、任意存取的存储结构
(8)树是结点的集合,它的根结点数目是 A)有且只有1 B)1或多于1
C)0或1 D)至少2
(9)下列有关数据库的描述,正确的是 A)数据库是一个DBF文件 B)数据库是一个关系
C)数据库是一个结构化的数据集合 D)数据库是一组文件
(10)数据库、数据库系统和数据库管理系统之间的关系是
A)数据库包括数据库系统和数据库管理系统 B)数据库系统包括数据库和数据库管理系统 C)数据库管理系统包括数据库和数据库系统 D)三者没有明显的包含关系
(11)以下4个选项中,不能看作一条语句的是
A); B)a=5,b=2.5,c=3.6; C)if(a<5); D)if(b!=5)x=2;y=6;
(12)下面四个选项中,均是不合法的用户标识符的选项是
A)A P_0 do
成才教育内部资料 0791-6290062 版权所有 翻印必究
B)float la0_A C)3 C)b-a goto int D)4 D)_123 temp int (19)若变量已正确定义,有以下程序段
int a=3,b=5,c=7; (13)以下选项中不属于字符常量的是
if(a>b) a=b; c=a; A)′C′
if(c!=a) c=b; B)′′C′′
printf(\ C)′\\xCC′
D) ′\\072′ 其输出结果是 A)程序段有语法错
B)3,5,3 (14)设变量已正确定义并赋值,以下正确的表达式是
A)x=y*5=x+z C)3,5,5 B)int(15.8%5) D)3,5,7 C)x=y+z+5,++y D)x=25%5.0 (20)若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的 switch语句是
A)switch(x) (15)若变量已正确定义并赋值,以下符合C语言语法的
{case 1.0:printf(\ 表达式是
A)a:=b+1 case 2.0:printf(\ B)a=b=c+2 B)switch((int)x); C)int 18.5%3 {case 1:printf(\ D)a=a+7=c+b case 2:printf(\ C)switch(a+b)
{case 1:printf(\ (16)以下程序的运行结果是
int k=0; case 2+1:printf(\ void fun(int m) D)switch(a+b) {m+=k;k+=m;printf(\ k=%d \ {case1:printf(**\\n);} main() casec:printf(**\\n);} {int i=4; fun(i++); printf(\ k=%d\\n\(21)有以下程序 } #include
A)741 ctype.h文件,不能用于判断c中的字符是否为大写字母的
B)963 表达式是
A)isupper(c) C)852
D)875421 B)′A′<=c<=′Z′
C)′A′<=c&&c<=′Z′ D)c<=(′z′-32)&&(′a′-32)<=c (22)以下描述中正确的是 A)由于do-while循环中循环体语句只能是一条可执(18)设有: 行语句,所以循环体内不能使用复合语句 int a=1,b=2,c=3,d=4,m=2,n=2; B)do-while循环由do开始,用while结束,在while(表执行 (m=a>b)&&(n=c>d)后,n的值是 达式)后面不能写分号 A)1 C)在do-while循环体中,是先执行一次循环,再进行判 B)2 断
20