下列论述中正确的是(B )
A.
有一种以上根结点的数据构造不一定是非线性构造B.
只有一种根结点的数据构造不一定是线性构造C.
循环链表是非线性构造D.
双向链表是非线性构造
解析:A:线性结构有且仅有一个根节点,所以有一个以上根节点的一定是非线性结构;
B:比如树就不是非线性结构,但是它只有一个根节点
C,D:链表是线性结构
某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)( D )
A.
3B.
4C.
6D.
7
解析:因为它叶子结点只有一个,所以它一定是只有右子树或者左子树的二叉树,那么它的深度就会等于它的结点个数
下面描述中错误的是( A)
A.
系统总体构造图支持软件系统的具体设计B.
软件设计是将软件需求转换为软件表达的过程C.
数据构造与数据库设计是软件设计的任务之一D.
PAD图是软件具体设计的表达工具
解析:系统总体结构图支持软件系统的需求分析阶段,实际上就是框架图,PAD图支持软件系统的具体设计(详细设计)
如下选项中不能用作C程序合法常量的是( A )
A.
1,234B.
“123”C.
123D.
“\x7G”
解析:A:中间有,会造成语法错误
有如下程序:
1
2
3
4
5
6
7
8
9
#include<stdio.h>
main()
{
char
s[]=
"012xy\08s34f4w2"
;
int
i,n=0;
for
(i=0;s[i]!=0;i++)
if
(s[i]>=
"0"
&&s[i]<=
"9"
)n++;
printf
(
"%d\n"
,n);
}
程序运行后的输出成果是(B )
A.
0B.
3C.
7D.
8
解析:012xy\0,遇到了\0结束循环,所以只能计算到123是数字,所以是3个
若i和k都是int类型变量,有如下for语句:
1
2
for
(i=0,k=1;k=1;k++)
printf
(
"*****\n"
);
下面有关语句执行状况的论述中正确的是( D )
A.
循环体执行两次B.
循环体执行一次C.
循环体一次也不执行D.
构成无限循环
解析:因为判断循环是否继续的的条件为k=1,是一个赋值操作,则该条件一直成立,所以会造成死循环
设有定义:double x[10],*p=x;,如下能给数组x下标为6的元素读入数据的正确的语句是( C )
A.
scanf("%f",&x[6]);B.
scanf("%lf",*(x+6));C.
scanf("%lf",p+6);D.
scanf("%lf",p[6]);
解析:因为scanf里面要输入的为数组下标为6的地址,并且类型为double
有如下程序:
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
main()
{
int
x=1,y=0;
if
(!x) y++;
else
if
(x==0)
if
(x) y+=2;
else
y+=3;
printf
(
"%d\n"
,y);
}
程序运营后的输出成果是(D )
A.
3B.
2C.
1D.
0
解析:因为else总是和前面最近的尚未配对的if,所以最后
if
(x) y+=2;
else
y+=3;
是一起的一句,则前面if和else if的条件都是false,所有没有改变y的值
若有定义语句:char s[3][10],(*k)[3],*p;,则如下赋值语句正确的是( C )
A.
p=s;B.
p=k;C.
p=s[0];D.
k=s;
解析:A:p=s将二维数组赋值给指向字符的指针,错误;
B:p=k将指向一维数组的指针赋值给指向字符的指针,错误;
C:p=s[0]是把一维数组的首地址赋给p指针,正确;
D:k=s将二维数组赋值给一维数组,错误;