软考大纲

1.循环队列

循环队列边界条件处理  循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是"空"还是"满"。

  解决这个问题的方法至少有两种:

  ① 另设一布尔变量以区别队列的空和满;

  ②另一种方式就是数据结构常用的: 队满时:(rear+1)%n==front,n为队列长度(所用数组大小),由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以  需要求余运算。如图情况,队已满,但是rear(5)+1=6!=front(0),对空间长度求余,作用就在此6%6=0=front(0)。

循环队列的元素个数

(front - rear +n ) % n;

考题

循环队列的储存空间Q(1:35),初始状态 front = rear =35,经过一系列出队入队运算后,front = rear =15,则循环队列元素的个数__

答案:0或35.

2.关系数据库

关系数据结构

 单一的数据结构----关系

  现实世界的实体以及实体间的各种联系均用关系来表示

  数据的逻辑结构----二维表

  从用户角度,关系模型中数据的逻辑结构是一张二维表。

  但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

常用的关系操作

  ◇查询:选择、投影、连接、除、并、交、差

  ◇数据更新::插入(insert)、删除(delete)、修改(update)

  查询的表达能力是其中最主要的部分

关系操作的特点

  集合操作方式:即操作的对象和结果都是集合。

  (非关系数据模型的数据操作方式:一次一记录文件系统的数据操作方式)

考题:

在关系数据库中用来表示实体间联系的是___

答案:二维表

公司中有多个部门和多个职员,每个职员只能属于一个部门,一个部门可以有多个职员,则实体部门和职员间的联系是___

答案:m:1的联系。

3.数据字典

  数据字典是指对数据的数据项数据结构数据流数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

编辑本段

数据字典-数据库数据字典

  是一组表和视图结构。它们存放在SYSTEM表空间中。

  数据库数据字典不仅是每个数据库的中心,而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。

  数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

  组成:

  1、数据项:数据项是最基本的数据元素,是有意义的最小数据单元,在数据字典中,定义数据项特性包括:数据项的名称、编号、别名和简述;数据项的长度;数据项的取值范围。

  2、数据结构数据项是不能分解的数据,而数据结构是可以进一步分解的数据包。数据结构由两个或两个以上相互关联的数据元素或者其他数据结构组成的。一个数据结构可以由若干个数据元素组成,也可以由若干个数据结构组成,还可以由若干个数据元素和数据结构组成。

  3、数据流 :数据流由一个或一组固定的数据项组成。定义数据流时,不仅说明数据流的名称、组成等,还应指明它的来源、去向和数据流量等。

  4、数据存储 :数据存储在数据字典中只描述数据的逻辑存储结构,而不涉及它的物理组织。

  5、处理过程:处理逻辑的定义仅对数据流程图中最底层逻辑加以说明。

考题:

数据字典(DD)所定义的对象都包含于__

答案:数据流图(DFD图)

4.

软件规格说明书的作用不包括__

A 软件验收的依据 B用户与开发人员要做什么的共同理解

C 软件设计的依据 D然间可行性研究的依据

答案:D

5.黑盒测试

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

测试方法

黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。

考题:

下列属于黑盒测试的方法:

A 语句覆盖   B 逻辑覆盖

C边界值分析 D路径覆盖

答案:C

6.软件设计

含义

  软件设计的任务是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。

设计阶段

一、概要设计,主要包括:

  1、结构设计

  2、接口设计

  3、全局数据结构设计

二、详细设计[1]

特征  

         一,抽象

  二,模块化

  三,信息隐蔽

  四,模块独立性:模块独立性可以从两个方面度量:

  1,内聚性:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。

  2,耦合性:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合[1]

 

        设计要素  

        软件设计包括软件的结构设计,数据设计,接口设

        计和过程设计。结构设计是指:定义软件系统各主要部件之间的关系。

  数据设计是指:将模型转换成数据结构的定义。

  接口设计是指:软件内部,软件和操作系统间以及软件和人之间如何通信。

  过程设计是指:系统结构部件转换成软件的过程描述

设计原则

  一、设计对于分析模型应该是可跟踪的:软件的模块可能被映射到多个需求上。

  二、设计结构应该尽可能的模拟实际问题。

  三、设计应该表现出一致性。

  四、不要把设计当成编写代码

  五、在创建设计时就应该能够评估质量。

  六、评审设计以减少语义性的错误。

  七、设计应该模块化,将软件逻辑地划分为元素或子系统,并包含数据体系结构、接口和构件的清晰表示。

        http://baike.baidu.com/view/575391.htm#refIndex_1_575391

考题:

下面不属于软件设计阶段的任务:

A 软件总体设计 B算法设计

C 制定软件确认测试计划 D数据库设计

答案:C

7.标识符

C语言中的标识符

  1) 标识符由字母、数字、下划线“_”组成,并且首字符不能是数字.

  2) 不能把C语言关键字作为标识符,例如if ,define ,for, while等.

  3) 标识符长度是由机器上的编译系统决定的,一般的限制为8字符

  (注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)。

  4) 标识符对大小写敏感,即区分大小写。

  5)标识符命名应做到“见名知意”

  下面的标识符名是合法的:

  year,Day,ATOK,x1,_ CWS,_change_to

  而下面的标识符名是不合法的:

  #123,.COM,$100,1996Y,1_2_3,Win3.2

C++中的标识符

  1) 标识符由字母、数字、下划线“_”组成。

  2) 不能把C++关键字作为标识符。

  3) 标识符长度限制32字符。

  4) 标识符对大小写敏感。

  5)首字符只能是字母或下划线,不能是数字。

考题:

C语言的标识符分为关键字,预定义标识符和用户标识符,下列描述正确的是____

A 预定义标识符(如库中函数名)可用作用户标识符,但失去原有含义

B 用户标识符可由字母数字任意顺序组成

C在标识符中大写和小谢被认为是相同的字符

D关键字可用作用户标识符,但失去原有含义

答案 A

下列选项中表示合法的常量的是__

A . 9 9 9    B. 0Xab   C.  123E0.2   D.  2.7E

答案  B

8.符号常量

  在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。

  符号常量在使用之前必须先定义,其一般形式为:

  #define 标识符 常量

  其中#define 也是一条预处理命令(预处理命令都以"#"开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。

  使用符号常量的好处是:

  含义清楚;

  能做到“一改全改”。

#define PRICE 30

考题:

下列叙述中错误的是__

A 非零值得常量有正值和负值之分

B 常量是在程序运行过程中值不能被改变的量

C 定义符号常量必须用类型名来设定常量的类型

D 用符号名表示的常量叫符号常量

答案:C

9.scanf

空白符

  空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。

非空白符

  一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

使用scanf函数时应该注意的问题

  (1) 对于字符串数组或字符串指针变量,由于数组名和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。

  (2) 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。

  (3) scanf()函数中没有精度控制。

  如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。

  (4) scanf中要求给出变量地址,如给出变量名则会出错

  如 scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。

  (5) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。

  C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

  (6) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

     (7) 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

http://baike.baidu.com/view/1390039.htm

考题

若有定义语句int a ,b;scanf("d%,d%",&a,%b);一下选项中不能把3赋值给a,5赋值给b的是

A  3,5,   B  3,5,4 

C 3,   5  D 3,5

答案:C

10 while

软考大纲

软考大纲

各种坑爹

11.三元操作符

考题:

  char a = 'H';
 a = ('A'<= a && a<='Z') ? (a-'A'+'a') :a;
 cout<<a<<endl;

答案  h

12 。二位数组

  二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m,列下标从q到n,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

  LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

  按“列优先顺序”存储时,地址计算为:

  LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

  存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节

  二维数组又称为矩阵,行列数相等的矩阵称变方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵的所有非零元素都集中在主对角线上.

考题:

void fun(int a[][N],int b[])
{
	int i,j;
	for( i = 0;i<N;i++)
	{
		b[i] = a[i][0];
		for(j = 1;j<N;j++)
			if(b[i]<a[i][j])
				b[i]=a[i][j];
	}
}

int main()
{
	int x[N][N] = {1,2,3,4,5,6,7,8,9},y[N],i;
	fun(x,y);
	for(int i=0;i<N;i++)
		cout<<y[i]<<",";
	system("pause");
}

答案 3, 6, 9

13 .puts

  puts()函数用来向标准输出设备(屏幕)写字符串并换行,其调用方式为,puts(s);其中s为字符串字符(字符串数组名或字符串指针)。 

      puts 和 printf 的用法一样,puts()函数的作用与语句“printf("%s\n",s);的作用相同。注意:puts在输出字符串后回车符。

  puts()函数只能输出字符串,不能数值或进行格式变换。

  可以将字符串直接写入puts()函数中,输出至屏幕。如:puts("Hello,Turo C2.0:");

考题:

	char a[10]="abc",b[10]="012",c[10]="xyz";
	cout<<a<<endl;
	puts(strcat(a,c+1));

答案 a2yz

 

未完待续。。。。

 

原文链接: https://www.cnblogs.com/byfei/archive/2012/12/10/3112369.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    软考大纲

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/72130

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午3:13
下一篇 2023年2月9日 下午3:13

相关推荐