计算机二级C语言|错题汇总+解析(DAY2)

设循环队列的存储空间为Q(1:50),初试状态为front=rear=50。经过一系列正常操作后,front-1=rear。为了在该队列中寻找值最大的元素,在最坏的情况下需要比较的次数为(C

A. 

0

B. 

1

C. 

48

D. 

49

解析:因为循环队列,有49个元素,因为front-1=rear,这时候的是队满的情况,则比较的的次数是49-1=48


下列数据流图(DFD)构造规则中正确的是(D

A. 

“数据存储”间应有数据流

B. 

“数据流”可不带有数据流名

C. 

父图子图是指任意上下层的两个数据流图

D. 

子图的输入输出数据流与父图中相关加工的输入输出数据流必须一致

解析:数据流图应遵循以下构造规则和注意事项:

①对加工处理建立唯一、层次性的编号,且每个加工处理通常要求既有输入又有输出;

②数据存储之间不应有数据流;

③数据流图的一致性,即输入输出、读写的对应;

④父图、子图关系与平衡规则,相邻两层DFD之间具有父子关系,子图代表了父图中某个加工的详细描述,父图表示了子图间的接口。子图个数不大于父图中的处理个数。所有子图的输入、输出数据流和父图中相应处理的输入、输出数据流必须一致。


不属于对象构成成份的是(A)

A. 

规则

B. 

属性

C. 

标识

D. 

方法(或操作)

解析:一个对象通常可由对象名(标识)、属性和操作三部分组成,对象名唯一标识一个对象。


下列叙述中错误的是(C)。

A. 

c语句必须以分号结束

B. 

复合语句在语法上被看作一条语句

C. 

空语句出现在任何位置都不会影响程序运行

D. 

赋值表达式末尾加分号就构成赋值语句

解析

A:在 C 程序中,分号是语句结束符。 每个语句必须以分号结束。

C:例如在for循环中循环条件为空时,则不判断循环条件,变成死循环,会影响程序运行!!!


执行下列程序时输入456<空格>789<空格>123<回车>,输出结果是(D

1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

main()

{

    char m[80];

    int c,i;

    scanf("%c",&c);

    scanf("%d",&i);

    scanf("%s",&m);

    printf("%c,%d,%s\n",c,i,m);

 }

A. 

456,789,123

B. 

4,789,123

C. 

4,56,789,123

D. 

4,56,789

解析:第一个scanf是字符输入,只能输入一个字节,所以是4,然后第二个scanf是整型输入,所以空格作为结束,所以是56,然后第三个是字符串类型输入,所以是789


1

2

3

4

5

6

7

8

9

fun(int *b,int c,int d)

{

    int k;

    for(k=0;k<c*d;k++)

    {

        *b=c+d;

        b++;

    }

}

则调用此函数的正确写法是(假设变量a的说明为int a[10])( C)。

A. 

fun(*a,6,14);

B. 

fun(&a,6,8);

C. 

fun(a,8,4)

D. 

fun((int)a,8,6)

解析:int a[10],一维数组中,a代表的是首元素的地址


设Y为整型变量,A=1,A的地址为EF01;B=2,B的地址为EF02;执行语句B=&A;Y=&B;后Y的值(C)。

A. 

1

B. 

2

C. 

EF01

D. 

EF02

解析:B=&A,将A的地址赋值给了B;Y=&B,所以Y的值就是A的地址


以下叙述中不正确的是(C)。

A. 

预处理命令行都必须以#号开始,结尾不加分号

B. 

在程序中凡是以#号开始的语句行都是预处理命令行

C. 

c程序在执行过程中对预处理命令进行处理

D. 

预处理命令可以放在程序中的任何位置

解析预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置,C语言在编译前由预处理器对预处理命令进行处理,编译时进行语法分析。


设有下面的定义:

1

2

3

4

5

6

struct st

{

    int a;

    float b;

}d;

int *p;

要使指向结构变量a中的a成员,正确的赋值语句是(D)。

A. 

*p=d.a;

B. 

p=&a;

C. 

p=d.a;

D. 

p=&d.a;

如果需要打开一个已经存在的非空文件"FILE"并进行修改,正确的语句是(D)。

A. 

fp=fopen("FILE","r");

B. 

fp=fopen("FILE","a+");

C. 

fp=fopen("FILE","w+");

D. 

fp=fopen("FILE","r+");

解析

r:以只读的方式打开文本文件,文件必须存在;

w:以只写的方式打开文本文件,文件若存在则清空文件内容从文件头部开始写,若不存在则根据文件名创建新文件并只写打开;

a:以只写的方式打开文本文件,文件若存在则从文件尾部以追加的方式开始写,文件原来存在的内容不会清除(除了文件尾标志EOF),若不存在则根据文件名创建新文件并只写打开;

r+:以可读写的方式打开文本文件,文件必须存在;

w+:以可读写的方式打开文本文件,其他与w一样;

a+:以可读写的方式打开文本文件,其他与a一样;


下面选项中关于文件指针概念的叙述正确的是(C

A. 

文件指针就是文件位置指针,表示当前读写数据的位置

B. 

文件指针指向文件在计算机中的存储位置

C. 

文件指针是程序中用FILE定义的指针变量

D. 

把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符

解析
文件指针指向的是一块内存区域,这块区域存储着打开的文件的相关信息,包括文件读取指针当前位置、文件读取缓冲区大小等信息,并不是指向文件的。fscanf是从文件中格式化读取,fprintf才是向文件中格式化写入。


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

A. 

可封装

B. 

自顶向下

C. 

模块化

D. 

逐步求精

解析:结构化程序设计原则主要有四个原则:

1、自顶向下;先从最上层总目标开始设计,逐步使问题具体化。

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

3、模块化。

4、限制使用goto语句。


某带链栈初始状态为top=bottom=NULL,经过一系列正常的入栈与退栈操作后,top=10,bottom=20。该栈中的元素个数为(A

A. 

不确定

B. 

10

C. 

1

D. 

0

解析:带链的栈是具有栈属性的链表。
线性链表的存储单元是不连续的, 为把存储空间中一些离散的空闲存储结点利用起来, 把所有空闲的结点组织成一个带链的栈, 称为可利用栈。
线性链表执行删除操作运算时, 被删除的结点可以"回收"到可利用栈, 对应于可利用栈的入栈运算; 线性链表执行插入运算时, 需要一个新的结点, 可以在可利用栈中取栈顶结点, 对应于可利用栈的退栈运算。
可利用栈的入栈运算和退栈运算只需要改动top指针即可。
因为是不连续的存储空间, 所以top指针将不会有规律地连续变化, 因此无法据此判断栈中的元素个数。


若有以下程序

1

2

3

4

5

6

7

#include<stdio.h>

main()

{

    int c;

    c=13|5;

    printf("%d\n",c);

 }

则程序的输出结果是(C

A. 

15

B. 

18

C. 

13

D. 

5

解析:13的二进制是1011

5的二进制是0011

按位与的规则:有1则1,全0则0

1011 按位与0011是1011,那么十进制就是13


设顺序表的长度为n,下列算法中,最坏情况下比较次数等于n(n-1)/2的是(A

A. 

快速排序

B. 

堆排序

C. 

顺序查找

D. 

寻找最大项

解析:A:快速排序最坏的情况,就是逆序的时候,这时候定的基准元素就要比较n-1次,然后回到对应的位置,后面下个基准则比较n-2次,......最后一个比较1次,所以等差数列计算就是n(n-1)/2次

B:堆排序的最坏时间复杂度是O(nlog2n)

C:顺序查找是n次

D:寻找最大项是比较n-1次


下列关于数据库特点的说法中正确的是(A

A. 

数据能共享且独立性高

B. 

数据能共享但数据冗余很高

C. 

能保证数据完整性但降低了安全性

D. 

数据独立性高但不能实现共享

设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a,&c2);

语句变量a1,a2赋值为数值10,20,为变量c1,c2赋字符X,Y。以下所示的输入形式中正确的是(C

A. 

10 X20 Y

B. 

10 X 20 Y

C. 

10X 20Y

D. 

10 X 20 Y

解析:输入字符类型时,前面不能有空格,要不然就赋值不了,而整型是可以的,整型会自动去除空格


对长度为10的线性表进行冒泡排序,最坏的情况下需要比较的次数为(C

A. 

9

B. 

10

C. 

45

D. 

90

解析:冒泡排序最坏情况就是逆序的时候,第一趟要比较n-1次,第二趟要比较n-2次.....最一趟比较1次,所以总共是n*(n-1)/2。


以下能正确定义字符串的语句是(B

A. 

char str="\×43";

B. 

char str[]="\0";

C. 

char str=";

D. 

char str[]={'\064'};

解析:A,C都是字符,不是字符串

D:定义的是字符数组,这个数组只有一个元素.字符串必须以'\0'结束,因此A定义的不属于字符串.若改为下面形式,则是正确的.

char str[2]={'\064'}; //没有赋值的第二个元素str[1]被初始化'\0',符合字符串定义.

char str[]={'\064','\0'};


以下叙述中正确的是(A

A. 

当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改

B. 

花括号对只能用来表示函数的开头和结尾,不能用于其他目的

C. 

空语句就是指程序中的空行

D. 

复合语句在语法上包含多条语句,其中不能定义局部变量

解析

C:只有分号“;”组成的语句称为空语句。 空语句是什么也不执行的语句。

D:复合语句可以包含多条语句 , 在其中可以定义局部变量 ,例如:for(int i=0;i<n;i++),可以定义局部变量


结构化程序设计原则强调的是(A)

A. 

自顶向下

B. 

可封装性

C. 

可复用性

D. 

可恢复性

以下叙述中正确的是(D)

A. 

打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

B. 

在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

C. 

C语言中的文件是流式文件,因此只能顺序存取数据

D. 

当对文件的读操作完成之后,必须将它关闭,否则可能导致数据丢失

解析:A:使用a,追加去写,就不会覆盖原来的数据

B:可以读写同时

C:C语言中的文件可以顺序存取数据,也可以随机可以存取数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值