1、以下不构成无限循环的语句或语句组是( )。
A.n=0:
do{++n;}while(n<=0);
B.n=0;
while(1){n++;}
C.n=10;
while(n);{n--;}
D.for(n=0,i=1;;i++)n+=i;
参考答案:A
参考解析: 选项A中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以wilile(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。
2、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( )。
A.1
B.0
C.2
D.不知道a的值,不能确定
参考答案:A
参考解析: 逻辑或”||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。
3、程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。
若有以下程序段:
该程序段实现的功能是( )。
A.删除尾结点
B.尾结点成为首结点
C.删除首结点
D.首结点成为尾结点
参考答案:D
参考解析: 本题考查链表的操作,本题中首先是s指向了它的下个结点,题目中说明了s总是指向链表的第一个结点,然后while循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项D正确。
4、下列选项中不属于结构化程序设计原则的是( )。
A.可封装
B.自顶向下
C.模块化
D.逐步求精
参考答案:A
参考解析: 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
5、支持子程序调用的数据结构是( )。
A.栈
B.树
C.队列
D.二叉树
参考答案:A
参考解析: 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。
6、有以下程序:
以上程序执行后abc.dat文件的内容是( )。
A.China
B.Chinang
C.ChinaBeijing
D.BeijingChina
参考答案:B
参考解析: 本题考查文件操作函数,fwrite和rewind函数,题目中先是将a2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入sl字符串,那么s1字符串就将前5个字符覆盖,所以最终结果为Chinang,选项B正确。
7、设有定义:
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。