1、程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。
若有以下程序段:
该程序段实现的功能是( )。
A.删除尾结点
B.尾结点成为首结点
C.删除首结点
D.首结点成为尾结点
参考答案:D
参考解析: 本题考查链表的操作,本题中首先是s指向了它的下个结点,题目中说明了s总是指向链表的第一个结点,然后while循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项D正确。
2、下列选项中不属于结构化程序设计原则的是( )。
A.可封装
B.自顶向下
C.模块化
D.逐步求精
参考答案:A
参考解析: 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
3、有以下程序:
以上程序执行后abc.dat文件的内容是( )。
A.China
B.Chinang
C.ChinaBeijing
D.BeijingChina
参考答案:B
参考解析: 本题考查文件操作函数,fwrite和rewind函数,题目中先是将a2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入sl字符串,那么s1字符串就将前5个字符覆盖,所以最终结果为Chinang,选项B正确。
4、设有定义:
struct complex
{ int real,unreal;}data1={1,8},data2;
则以下赋值语句中错误的是( )。
A.data2=(2,6);
B.data2=data1;
C.data2.real=data1.real;
D.data2.real=data1.unreal;
参考答案:A
参考解析: A选项中可以在声明变量的同事为data2赋值,但是data2=(2,6);应写作data2={2,6}。所以选择A。
5、有以下程序(注:字符a的ASCII码值为97):
程序运行后的输出结果是( )。
A.789
B.abc
C.7890
D.979899
参考答案:A
参考解析:因为小写字符a,b,c的ASCII码值分别为97,98,99,而在do while循环语句中,每次对字符的ASCII码值取余数并输出,所以分别输出7,8,9。
6、有以下程序:
程序运行后的输出结果是( )。
A.7
B.10
C.8
D.9
参考答案:D
参考解析: 调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c));即调用f(3,6)函数返回9。
7、以下四个程序中,完全正确的是( )。
参考答案:B
参考解析: C语言中注释语句的注释方法是:/*注释内容*/或//注释一行。所以A与C错误,D选项中预编译命令indade前丢掉了”#”号。所以选择B。
8、下列叙述中正确的是( )。
A.在switch语句中,不一定使用break语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.break语句只能用于switch语句
参考答案:A
参考解析: default语句在switch语句中可以省略,所以B错误;switch语句中并非每个case后都需要使用break语句,所以C错误;break语句还可以用于for等循环结构中,所以D错误。
9、有以下程序:
程序运行后的输出结果是( )。
A.7
B.5
C.3
D.9
参考答案:C
参考解析: 向switch语句块传送参数后,编译器会先寻找匹配的case语句块,找到后就执行该语句块,遇到break跳出;如果没有匹配的语句块,则执行default语句块。case与default没有顺序之分。所以第一次循环k的值为1,执行c+=k,c的值为l,再执行case 2后的语句c++,c的值为2,遇到break语句跳出循环;第二次循环k的值为2,执行case 2后面的语句c++,c的值为3,跳出循环。
10、以下关于typedef的叙述错误的是( )。
A.用typedef可以增加新类型
B.typedef只是将已存在的类型用一个新的名字来代替
C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名
D.用typedef为类型说明一个新名,通常可以增加程序的可读性
参考答案:A
参考解析: typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强程序的可移植性。所以A选项错误。
微信搜索"考试吧"了解更多考试资讯、下载备考资料
相关推荐: