二级C语言程序设计模拟21Word文件下载.docx
- 文档编号:16692358
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:18
- 大小:24.16KB
二级C语言程序设计模拟21Word文件下载.docx
《二级C语言程序设计模拟21Word文件下载.docx》由会员分享,可在线阅读,更多相关《二级C语言程序设计模拟21Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
白盒测试法主要有逻辑覆盖、基本路径测试等。
逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断一条件覆盖,选择B选项。
其余为黑盒测试法。
第6题:
下面对对象概念描述正确的是______。
A.对象间的通信靠消息传递
B.对象是名字和方法的封装体
C.任何对象必须有继承性
D.对象的多态性是指一个对象有多个操作
对象之间进行通信的结构叫做消息,A正确。
封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,不能简单地说成是名字和方法,B选项错误。
对象不一定必须有继承性,C选项错误。
多态性是指同一个操作可以是不同对象的行为,D选项错误。
第7题:
软件设计中模块划分应遵循的准则是______。
A.低内聚低耦合
B.高耦合高内聚
C.高内聚低耦合
根据软件设计原理提出如下优化准则:
①划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构;
②一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近;
③软件结构的深度、宽度、扇入、扇出应适当;
④模块的大小要适中。
C选项正确。
第8题:
下面描述中不属于数据库系统特点的是______。
A.数据共享
B.数据完整性
C.数据冗余度高
D.数据独立性高
数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C选项错误。
第9题:
数据库设计过程不包括______。
A.概念设计
B.逻辑设计
C.物理设计
D.算法设计
数据库设计过程主要包括需求分析、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。
答案为D选项。
第10题:
有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是______。
A.自然连接
B.交
C.投影
D.并
关系R和关系S有公共域,关系T是通过公共域的等值进行连接的结果,符合自然连接,选A选项。
第11题:
以下叙述中正确的是______。
A.程序必须包含所有三种基本结构才能成为一种算法
B.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令
C.如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达
D.只有简单算法才能在有限的操作步骤之后结束
C语言程序可以不包含三种基本结构,也可以包含其中的一种或多种,所以A选项错误。
三种基本结构可以表示任何复杂的算法,所以C选项错误。
正确的算法,不管是简单算法还是复杂算法都可以在有限的操作步骤之后结束,这是算法的有穷性,所以D选项错误。
第12题:
A.在算法设计时,可以把复杂任务分解成一些简单的子任务
B.在C语言程序设计中,所有函数必须保存在一个源文件中
C.只要包含了三种基本结构的算法就是结构化程序
D.结构化程序必须包含所有的三种基本结构,缺一不可
C语言的程序中,函数不一定都放在同一个源文件中,可以分别放在不同源文件中,通过#include命令来引用,所以B选项错误。
结构化程序可以包含三种基本结构中的一种或几种,所以C、D选项错误。
第13题:
A.只能在函数体内定义变量,其他地方不允许定义变量
B.常量的类型不能从字面形式上区分,需要根据类型名来决定
C.预定义的标识符是C语言关键字的一种,不能另作他用
D.整型常量和实型常量都是数值型常量
变量可以定义在函数体外也可以定义在函数体内,所以A错误。
常量的类型可以从字面形式上区分,比如1为整型常量,1.0为实型常量,a为字符型常量,所以B选项错误。
预定义的标识符不是C语言的关键字,所以C选项错误。
第14题:
A.在C程序中的八进制和十六进制,可以是浮点数
B.整型变量可以分为int型、short型、long型和unsigned型四种
C.八进制数的开头要使用英文字母o,否则不能与十进制区分开
D.英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符
在C语言中,浮点数只采用十进制,它有两种表示形式:
十进制数形式和指数形式,所以A选项错误。
八进制数以数字0开头,所以C选项错误。
C语言中二进制数用0和1表示,所以D选项错误。
第15题:
A.在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B.在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C.在printf函数中,各个输出项只能是变量
D.使用printf函数无法输出百分号%
scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A选项正确。
scanf()的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以,所以B选项错误。
pnntf函数可以输出常量也可以输出变量,所以C选项错误。
prinf函数可以用“\%”来输出百分号%,所以D选项错误。
第16题:
A.在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符
B.只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度
C.scanf函数中的字符串,是提示程序员的,输入数据时不必管它
D.复合语句也被称为语句块,它至少要包含两条语句
在prinrf和scanf函数中都可以指定数据的宽度,所以B错误。
scanf()的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配,所以C选项错误。
复合语句可以由任意多条语句构成,可以使一条也可以没有,所以D选项错误。
第17题:
A.逻辑“或”(即运算符||)的运算级别比算术运算要高
B.C语言的关系表达式:
0〈x〈10完全等价于:
(0〈x)&&(x〈10)
C.逻辑“非”(即运算符!
)的运算级别是最低的
D.由&&构成的逻辑表达式与由||构成的逻辑表达式都有“短路”现象
A选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。
B选项中,(x〉0)&&(x〈10)的值是1或0,条件是x〉0并且x〈10,但是0〈x〈10这种写法的结果任何时候都是1。
C选项中,逻辑“非”(即运算符!
)的运算级别是最高的。
D选项正确。
第18题:
A.if语句只能嵌套一层
B.if子句和else子句中可以是任意的合法的C语句
C.不能在else子句中再嵌套if语句
D.改变if-else语句的缩进格式,会改变程序的执行流程
A选项中,if语句的嵌套没有规定层数;
C选项中,可以在else子句中再嵌套if语句;
D选项中,改变if-else语句的缩进格式,不会改变程序的执行流程,需要注意if和else的配对问题。
B选项正确。
第19题:
A.只要适当地修改代码,就可以将do-while与while相互转换
B.对于“for(表达式1;
表达式2;
表达式3)循环体”,首先要计算表达式2的值,以便决定是否开始循环
C.对于“for(表达式1;
表达式3)循环体”,只在个别情况下才能转换成while语句
D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句
B选项中,for语句中需要先求解先求解表达式1;
C选项中,for语句使用最为灵活,它完全可以取代while语句;
D选项中,对于死循环,也可以使用for语句。
A选项正确。
第20题:
A.只能在循环体内和switch语句体内使用break语句
B.当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行
C.continue语句的作用是:
在执行完本次循环体中剩余语句后,中止循环
D.在while语句和do-while语句中无法使用continue语句
break语句通常用在循环语句和开关语句中。
当break用于开关语句switch中时,可使程序跳出swicch而执行switch以后的语句;
当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。
continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。
B、C、D三个选项中均有错误,因此A选项正确。
第21题:
A.´
\0´
表示字符0
B."
a"
表示一个字符常量
C.表达式:
´
a´
〉´
b´
的结果是“假”
D.´
\"
是非法的
A选项中,´
表示结束;
B选项中,字符常量是用单引号括起来的一个字符;
D选项中,´
是双引号符。
第22题:
A.字符变量在定义时不能赋初值
B.字符常量可以参与任何整数运算
C.同一英文字母的大写和小写形式代表的是同一个字符常量
D.转义字符用符号@开头
A选项中,字符变量在定义时可以赋初值;
C选项中,同一英文字母的大写和小写形式代表的是不同的字符常量;
D选项中,转义字符以反斜线“\”开头的。
因此B选项正确。
第23题:
A.函数名允许用数字开头
B.函数调用时,不必区分函数名称的大小写
C.调用函数时,函数名必须与被调用的函数名完全一致
D.在函数体中只能出现一次return语句
A选项中,函数名不允许以数字开头;
B选项中,函数调用时,函数名称是需要区分大小写的;
D选项中,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行。
因此C选项正确。
第24题:
A.如果p是指针变量,则&p是不合法的表达式
B.如果p是指针变量,则*p表示变量p的地址值
C.在对指针进行加、减算术运算时,数字1表示1个存储单元的长度
D.如果p是指针变量,则*p+1和*(p+1)的效果是一样的
A选项中,如果p是指针变量,则&p表示变量p的地址;
B选项中,如果p是指针变量,则*p表示变量p所指向的地址的值;
D选项中,如果p是指针变量,*p+1表示将p所指的值加上1,而*(p+1)表示的是先将指针右移一位再取所指向变量的值。
第25题:
A.基类型不同的指针变量可以相互混用
B.函数的类型不能是指针类型
C.函数的形参类型不能是指针类型
D.设有指针变量为double*p,则p+1将指针p移动8个字节
A选项中,虽然不同基类型的指针变量占用字节数是相同的,但是不能混用;
B选项中,所谓函数类型是指函数返回值的类型。
在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数;
C选项中,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。
因此D选项正确。
第26题:
如果定义:
floata[10],x;
则以下叙述中正确的是______。
A.语句a=&x;
B.表达式a+1是非法的
C.三个表达式a[1]、*(a+1)、*&a[1]表示的意思完全不同
D.表达式*&a[1]是非法的,应该写成*(&(a[1]))
B选项中,表达式a+1不是非法的;
C选项中,*(a+1)即指a[1];
D选项中,*&a[1]不是非法的。
因此A选项正确。
第27题:
有以下程序:
#include〈stdio.h〉
main()
{
inta[]={2,4,6,8},*p=a,i;
for(i=0;
i〈4;
i++)
a[i]=*p++;
printf("
%d\n"
a[2]);
}
程序运行后的输出结果是______。
A.2
B.8
C.4
D.6
本题通过语句“*p=a”将一维数组a的首地址的值赋值给变量p,即p的值为2。
执行for循环,a[i]=*p++,指将p的值赋给a[i]后,再进行++操作,因此4次循环后a[2]的值为6。
第28题:
A.语句inta[4][3]={{1,2},{4,5}};
是错误的初始化形式
B.语句inta[4][3]={1,2,4,5};
C.语句inta[][3]={1,2,4,5};
D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵
二维数组在初始化时,可以省略第一维,但是不可以省略第二维。
可以为部分数组元素初始化。
A、B、C选项内的初始化都没有错误。
第29题:
A.字符串常量"
Hello"
会被隐含处理成一个无名字符型数组,它有5个元素
B.不能用字符串常量对字符数组名进行整体赋值操作
C.charstr[7]="
string!
"
;
在语法上是合法的,运行也是安全的
D.char*str;
str="
与charstr[];
效果是一样的
字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符´
自动附加到字符串的尾部作为字符串的结束标识,故字符个数为n的字符串在内存中应占(n+1)个字节。
A选项中有6个元素,其中包含结尾字符,C选项中字符串常量包含8个字符,所以不能赋值在str[7]中,D选项后者赋值错误。
第30题:
A.在语句charstr[]="
中,数组str的大小等于字符串的长度
B.语句charstr[10]="
和charstr[10]={"
};
并不等价
C.对于一维字符数组,不能使用字符串常量来赋初值
D.对于字符串常量"
,系统已自动在最后加入了´
字符,表示串结尾
A选项中数组长度比字符串长度小一个字节,字符串中包含隐含的结尾符;
B选项中两者等价;
C选项中可以使用字符串常量来给一维字符数组赋值,就像B选项中一样。
第31题:
设有定义:
charstr[]="
则语句printf("
%d%d"
sizeof(str),strlen(str));
的输出结果是______。
A.55
B.66
C.65
D.56
本题考查sizeof和strlen对字符串的处理不同之处。
sizeof求出字符串的字符个数,包括结尾符;
Strlen求出字符串的实际字符,不包括结尾符。
所以答案为65,C选项正确。
第32题:
在32位编译器上,设有定义:
char*str1="
str2[]="
sizeof(str1),sizeof(str2));
A.56
B.55
C.66
D.46
本题主要考查了指向字符串的指针和字符数组,str1为一个字符指针,所以sizeof为4,str2为字符数组,其中包含6个字符,所以答案为“46”。
第33题:
A.任何情况下都不能用函数名作为实参
B.函数既可以直接调用自己,也可以间接调用自己
C.函数的递归调用不需要额外开销,所以效率很高
D.简单递归不需要明确的结束递归的条件
在某些情况下,函数名可以作为实参传递,所以A选项错误。
函数递归调用使用栈区来递归,需要额外开销,并且效率不高,C选项错误。
递归调用需要明确指出递归结束条件,否则就陷入死循环了,D选项错误。
第34题:
A.函数的形式参数不属于局部变量
B.对于变量而言,“定义”和“说明”这两个词实际上是同一个意思
C.在复合语句中不能定义变量
D.全局变量的存储类别可以是静态类
函数的形参属于局部变量,所以A选项错误。
声明变量不分配空间,定义变量要分配空间,所以B选项错误。
符合语句中可以定义变量,所以C选项错误。
第35题:
A.在一个程序中,允许使用任意数量的#include命令行
B.在包含文件中,不得再包含其他文件
C.#include命令行不能出现在程序文件的中间
D.虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接
本题考查预处理中文件包含的概念,包含文件中可以包含其他文件,B选项错误。
#include可以出现在程序文件的中间,C选项错误。
包含文件被修改了,包含该文件的源程序必须重新进行编译和连接,D选项错误。
第36题:
A.函数的返回值不能是结构体类型
B.在调用函数时,可以将结构体变量作为实参传给函数
C.函数的返回值不能是结构体指针类型
D.结构体数组不能作为参数传给函数
本题考查结构体变量作为函数参数,函数返回可以是结构体类型,也可以是结构体类型的指针,结构体数组可以作为参数传给函数。
第37题:
A.结构体数组名不能作为实参传给函数
B.结构体变量的地址不能作为实参传给函数
C.结构体中可以含有指向本结构体的指针成员
D.即使是同类型的结构体变量,也不能进行整体赋值
本题考查结构体变量作为函数参数,结构体变量的地址可以作为参数传给函数,结构体数组名就是一个地址,可以传给函数,如果是同类型的结构体变量,可以整体赋值。
第38题:
设有如下的说明和定义:
struct
inta;
char*s;
}x,*p=&x;
x.a=4;
x.s="
hello"
A.(p++)-〉a与p++-〉a都是合语法的表达式,但二者不等价
B.语句++p-〉a;
的效果是使p增1
C.语句++p-〉a;
的效果是使成员a增1
D.语句*p-〉s++;
等价于(*p)-〉s++;
本题考查结构体变量的引用,++p-〉a的效果是使成员a增1,p++-〉a不合法,*p-〉s++为字符e,与(*p)-〉s++不等价。
第39题:
下面关于位运算符的叙述,正确的是______。
A.\\表示“按位或”的运算
B.#表示“按位异或”的运算
C.&表示“按位与”的运算
D.~表示“按位异或”的运算
本题考查位运算。
^为按位异或,|为按位或,~表示按位取反。
所以C选项正确。
第40题:
下面选项中关于“文件指针”概念的叙述正确的是______。
A.文件指针是程序中用FILE定义的指针变量
B.文件指针就是文件位置指针,表示当前读写数据的位置
C.文件指针指向文件在计算机中的存储位置
D.把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符
在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。
通过文件指针就可对它所指的文件进行各种操作。
文件指针不是文件位置指针,所以B、C选项错误,D选项中不可以写入任意的字符。
程序填空题
第41题:
给定程序中,函数fun的功能是:
统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例如,若形参s所指的字符串为“abcdef35adgh3kjsdf7”,则输出结果为4。
请在下画线处填入正确内容并将下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
voidfun(char*s,int*t)
{inti,n;
n=0;
/**********found**********/
______!
=0;
if(s[i]〉=´
0´
&&s[i]〈=______)n++;
______;
{chars[80]="
abcdeB5adgh3kjsdf7"
intt;
\nTheoriginalstringis:
%s\n"
s);
fun(s,&t);
\nTheresultis:
t);
s[i];
9´
;
*t=n
本题考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言程序设计 模拟 21