二级C语言试题刷题录

2020.9 计算机二级C语言科目

选择题

标黄的为正确选项

程序流程图中带有箭头的线段表示的是

(控制流) 图元关系、数据流、调用关系

当图为数据流图的时候,标有名字的箭头表示数据流

结构化程序设计的基本原则不包括

多态性 自顶向下、模块化、逐步求精

软件设计中模块划分应遵循的准则是

高内聚低耦合 低内聚低耦合、低内聚高耦合、高内聚高耦合
软件设计中模块划分应遵循的准则应该是高内聚低耦合、模块大小规模适当、模块的依赖关系适当等。

在软件开发中,需求分析阶段产生的主要文档是

软件需求规格说明书 可行性分析报告、概要设计说明书、集成测试计划

算法的有穷性是指

算法程序的运行时间是有限的 算法程序所处理的数据量是有限的、算法程序的长度是有限的、算法只能被有限的用户使用、

对长度为 N N N的线性表排序,在最坏情况下,比较次数不是 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2的排序方法是

堆排序 快速排序、冒泡排序、直接插入排序

堆排序

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:

大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;
小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;

堆排序的平均时间复杂度为 Ο(nlogn)

算法步骤

创建一个堆 H[0……n-1];

把堆首(最大值)和堆尾互换;

把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;

重复步骤 2,直到堆的尺寸为 1。

堆排序学习扩展网址

link

下列关于栈的叙述正确的是

栈按先进后出组织数据 栈按先进先出组织数据、只能在栈底插入数据、不能删除数据

在数据库设计中,将E-R图转换成关系数据模型的过程属于

逻辑设计阶段 需求分析阶段、概念设计阶段、物理设计阶段

由关系R和S通过运算得到关系T,使用的运算为

在这里插入图片描述

并、自然连接、笛卡尔积

自然连接是一种特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性去掉
笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对
关系T可以很明显的看出是R与S中取得相同的关系组,所以是交运算

下列叙述中错误的是

C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
C语言中的非执行语句不会被编译,不会生成二进制的机器指令
C程序经过编译、连接步骤后才能真正成为一个可执行的二进制机器指令文件、
用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中、
C语言源程序经编译后生成后缀为.obj的目标程序

下列合法的一组C语言数值常量的是

12. 0Xa23 4.5e0
028 .5e - 3 -0xf、 028错误,8进制没有8
.177 4e1.5 0abc、4e1.5错误,e后需为整数
0x8A 10,000 3.e5 10,000错误,不能有逗号隔开

若有定义:double a = 22; int i=0,k=18;则不符合C语言规定的赋值语句是

i = a % 11
%为二元运算符,具有左结合性,参与运算的量均为整形,而a为double型
i = (a + k) <= (i + k)、
a = a++, i++、
i = !a

有以下程序,执行完后输出
#include <stdio.h>
main(){
	char a,b,c,d;
	scanf("%c%c", &a, &b);
	c = getchar();
	d = getchar();
	printf("%c%c%c%c\n",a,b,c,d);
	}

12
3

scanf函数不能读入回车,而getchar函数可以
12
34、
12、
1234

有以下程序
#include <stdio.h>
main(){
	int a = 0,b = 0,c = 0, d = 0;
	if(a = 1) b = 1; c = 2;
	else d = 3;
	printf("%d%d%d%d\n",a,b,c,d);
	}  

编译错误

因为if 和 else 语句中插入了一句 c = 2,因此会出现else的位置报错

1120、
0003、
0120

以下程序段中的变量已正确定义,程序输出的结果是
#includ <stdio.h>
main(){
	for(i=0;i<4;i++,i++)
		for(j=0;j<3;j++);printf("*");
		}

*

printf语句在for外面,所以只会打印一个符号

**、

****、

********、

以下叙述错误的是

可以给指针变量赋一个整数作为地址值

通常来说,地址的值为16进制,并非为整数

函数可以返回地址值、
改变函数形参的值,不会改变对应实参的值、
当在程序的开头包含头文件stdio.h 时,可以给指针变量赋NULL NULL即为空

char p[] = {‘1’,‘2’,‘3’}, *q = p; 以下不能计算出一个char型数据所占字节数的表达式是

sizeof§
这计算的是一整个p数组的所占字节数

sizeof(char)、
sizeof(*q)、
sizeof(p[0])

有以下程序
#include <stdio.h>
main(){
	char s[] = "012xy\08s43";
	int i, n=0;
	for(i=0; s[i]!=0;i++)
		if(s[i] >= '0' && s[i] <= '9') n++;
		printf('%d',n);
		}

3
当遇到 \0 时程序识别为结束语句,于是只统计0 1 2

在C语言中,只有在使用时才占有内存单元的变量,其存储类型是

auto 和 register

auto:函数中的局部变量,动态分配内存空间,只有在函数调用时才会分配内存
register:为了提高效率,C语言允许将局部变量的值放在CPU的寄存器中,这种变量叫“寄存器变量”

auto和static、
extern和register、
static和register

下面结构体定义语句错误的是

struct ord {int x; int y;} struct ord a;

不能在定义结构体的同时,又用结构体类型名定义变量
struct ord {int x; int y;} ; struct ord a;
struct ord {int x; int y;} a;
struct {int x; int y;} a;

有以下程序,输出的是
#include <stdio.h>
main(){
	unsigned char a = 8, c;
	c = a >> 3;
	printf("%d\n",c);
	}

1

>>位运算符号,8的二进制表示为00001000,右移三位为00000001,即为十进制的1

16、
32、
0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值