下列选项中不属于结构化程序设计原则的是()

下列选项中不属于结构化程序设计原则的是(),第1张

答案为A,可封装

分析:

结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句

1.自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

2.逐步求精:对复杂问题,应设计一些子目标作为过渡,逐步细化。

3.模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。

4.限制使用goto语句

结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了:

(1)GOTO语句确实有害,应当尽量避免;

(2)完全避免使用GOTO语句也并非是个明智的方法,有些地方使用GOTO语句,会使程序流程更清楚、效率更高。

(3)争论的焦点不应该放在是否取消GOTO语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用GOTO语句。

2018年计算机二级考试C语言试题及答案(2)

选择题(每小题1分,共40分)

1[单选题] 若有定义语句:double a,* P=&a以下叙述中错误的是()。

A.定义语句中的*号是一个间址运算符

B.定义语句中的*号是一个说明符

C.定义语句中的P只能存放double类型变量的地址

D.定义语句中,*P=&a把变量a的地址作为初值赋给指针变量P

参考答案:A

参考解析:在变量定义double a,* P=&a中,*号是一个指针运算符,而非间址运算符,所以A错误。

6[单选题] 若有定义语句:int x=10,则表达式x-=x+x的值为()。

A.0

B.-20

C.-10

D.10

参考答案:C

参考解析:算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C。

2[单选题] 若有定义语句:double x,y,*px,*py执行了px=&xpy=&y之后,正确的输入语句是()。

A.scanf(”%If%le”,px,py)

B.scanf(”%f%f”&x,&y)

C.sceanf(”%f%f”,x.y)

D.scanf(”%If%If'’,x,y)

参考答案:A

参考解析:因为x,y都是double型数据,所以输入时的格式字符应为%lf,所以B与C错误。D选项中scanf("%lf%If",x,y)应为scanf(“%If%If"”,&x,&y)。

3[单选题] 下列数据结构中,属于非线性结构的是()。

A.循环队列

B.带链队列

C.二叉树

D.带链栈

参考答案:C

参考解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。

4[单选题] 对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

参考答案:D

参考解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队 *** 作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

5[单选题] 若变量已正确定义,在if(W)printf(”%d\n”,k)中,以下不可替代w的是()。

A.a<>b+c

B.ch=getchar()

C.a==b+c

D.a++

参考答案:A

参考解析:选项A是非法的表达式,C语言中没有<>运算符。

6[单选题] 下列排序方法中,最坏情况下比较次数最少的是()。

A.冒泡排序

B.简单选择排序

C.直接插入排序

D.堆排序

参考答案:D

参考解析:冒泡排序与筒单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。

7[单选题] 数据库管理系统是()。

A. *** 作系统的一部分

B.在 *** 作系统支持下的系统软件

C.一种编译系统

D.一种 *** 作系统

参考答案:B

参考解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据 *** 纵、数据维护、控制及保护和数据服务等。是一种在 *** 作系统之上的系统软件。

8[单选题] 以下选项中,能用作用户标识符的是()。

A._0_

B.8_8

C.void

D.unsigned

参考答案:A

参考解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B中以数字8开头,所以错误。C与D中用的是关键字void与unsigned,所以错误。

9[单选题] 以下叙述中错误的是()。

A.使用三种基本结构构成的程序只能解决简单问题

B.结构化程序由顺序、分支、循环三种基本结构组成

C.C语言是一种结构化程序设计语言

D.结构化程序设计提倡模块化的设计方法

参考答案:A

参考解析:使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。

10[单选题] 下列叙述中正确的是()。

A.栈是“先进先出”的线性表

B.队列是“先进后出”的线性表

C.循环队列是非线性结构

D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

参考答案:D

参考解析:栈是先进后出的线性表,所以A错误队列是先进先出的线性表,所以B错误循环队列是线性结构的线性表,所以C错误。

11[单选题] 以下不构成无限循环的语句或语句组是()。

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=1i++)n+=i

参考答案:A

参考解析:选项A中do后面的语句只执行了一次便结束了循环B选项中条件while(1)永远成立,所以是死循环C选项中n的值为10,而循环体为空语句,所以wilile(n)永远为真,进入死循环D选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。

12[单选题] 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。

A.1

B.0

C.2

D.不知道a的值,不能确定

参考答案:A

参考解析:逻辑或”||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。

13[单选题] 下列选项中不属于结构化程序设计原则的是()。

A.可封装

B.自顶向下

C.模块化

D.逐步求精

参考答案:A

参考解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。

14[单选题] 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。

A.10

B.8

C.6

D.4

参考答案:C

参考解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6个。

15[单选题] 支持子程序调用的数据结构是()。

A.栈

B.树

C.队列

D.二叉树

参考答案:A

参考解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/10968980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存