计算机二级错题汇总(2.11)
1.前中后遍历规律
有题目给出相关的关系图才得出序列
前序序列:
首先访问根节点然后遍历左子树,最后遍历右子数;在遍历左、右子树时仍然先访问根节点然后遍历左子树,最后遍历右子树。ABDEGCFH
中序序列:
首先遍历左子树然后访问根节点,最后遍历右子树。DBEGACFH
后序序列:
首先遍历左子数,然后访问遍历右子树,最后访问根节点。 DGEBHFCA
由已知序列求出未知的其他的序列
在前序序列中可以得出根节点,第一个字母就是;
在中序序列中根节点位于最后一个,推出后序序列。
2. 二叉树节点问题
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做树是因为他看去来像一颗倒挂的树,也就是说它根朝上,而叶朝下,它具有以下特点:
(1)每个节点零个个或多个子节点;
(2)没有父节点的节点称为根节点;
(3)每一个非根节点有且只有一个父节点;
(4)除了根节点外,每个字节点可以分为多个不相交的子树。
结点的度:节点拥有的子树的数目;
叶子:度为零的结点;
分支节点:度不为零的结点;
树的度:树中结点的最大层次;
无序树:如果树中节点的各子树之间的次序是不重要的,可以交换位置
有序树:如果树中的各子树之间的次序是重要的,不可以交换位置
3.栈与队列的规律
栈是一种特殊的线性表栈中的数据时按照先进后出或者后进先出的规则进行,队列也是一种线性结构但是进出的顺序是先进先出的规则。
4.数据库系统的三级模式
概念模式:是数据库系统中全局数据逻辑及结构的描述,是全体用户公共数据视图;
外模式:也称为子模式或用户模式,它是用户的数据视图给出了每个用户的局部数据描述;
内模式:又称为物理模式,它给出数据库物理存储结构与物理存取方法。
5.循环队列
循环队列有对头与队尾两个指针,但是循环队列仍是线性结构;
在循环队列中只需要对头指针与队尾指针两个指针来共同反应队列中元素的动态变化情况
计算机二级错题(2.12)
6.查找的比较次数
当有序线性表为顺序存储时才能用二分查找可以证明的是对于长度为n的有序线性表在最坏的情况下,二分法查找只需要查找log2 n次 而顺序查找需要比较n次
7.顺序存储结构与链式存储结构
链式存储结构既可以针对线性结构也可以针对非线性结构。
链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间
8.数据流图中带有箭头的线段表示的是数据流
9.需求分析阶段使用的工具有
在需求分析阶段使用到的工具有数据流图DFD,数据字典DD,判定表与判定树
10.对象的特点
对象有以下特点:标识唯一性、分类性、多态性、封装性、模块独立性好
11.数据管理技术发展
经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑物理性少,在各方面的表现都最好,一直占数据库领域主导地位。也是数据共享最好的时候
12.RST关系的四种运算
自然连接:
是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性去掉。
笛卡儿积:
交:
并:
13.数据常量规范
115L表示长整形数据
0115表示的是八进制数 但是数字中不能有8,还有八进制数常量应该是数字“0”开始
1.5e1.5 e后面应该是整数不能是小数
int(15.8%5) 取模运算符 的左右两个操作数均为整数
还有不能使用连续的等号
14.switch 语句
switch(expr1),中的expr1不能用浮点类型或long类型也不能为一个字符串,表达式后面不能有分号;
case后面常量表达式的类型必须与switch后面的表达式类型一致
15.数组说明一般形式
类型说明符 数组名[常量表达式]
例如:#define N 10
int x[N];
在定义数组时必须声明数组的长度.
16.字符串复制空间
*t++=*s++ 该语句是先执行t=*s然后才进行t=t+1,s=s+1
字符串是一种特殊的数组,就是遵循数组的规则来执行
17.全局变量作用域
全局变量的作用域是从声明处到文件结束,即由具体定义位置和extern说明来决定范围
18.typedef关键字
它的作用只是将C语言的已有的数据类型做了置换,并不是增加新的类型
19.文件的读写操
当文件的读写操作完成之后,必须将它关闭,否则可能导致数据丢失;
打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作;
在一个程序中当对文件进行了写操作之后,不用先关闭该文件然后再打开,才能读到第一个数据,可以用fseek() 函数进行重新定位;
C语言中的文件可以进行随机读写。
计算机二级错题(3.1)
1.栈与队列问题
栈是先进后出的线性表;队列是先进先出的线性表;循环队列是线性结构的线性表;有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
2.子程序调用的数据结构是
栈支持子程序调用。栈是一种只能在一段进行插入或删除的线性表,在主程序调用子函数时首先保存主程序的当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行。
3.二叉树计算结点问题
二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的节点多一个
4.排序问题次数
冒泡排序与简单插入排序与简单选择排序在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较次数时nlog2 n
5.软件测试与程序调试
软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误;
软件测试的基本准则:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象。
程序调试的基本步骤有:错误定位、修改设计个代码,以排除错误、进行回归测试,防止引进新的错误;也叫做Debug即排错。
6.数据库应用系统中的核心问题
核心问题是:数据库的设计
7.投影运算
投影运算是指对于关系内的域指定可引入新的运算。在关系R的内部进行的,是由R中原有的那些域的额列所组成的关系。
8.E-R图关系模式
从E-R图到关系模式的转换时比较直接的,是体育联系都可以表示称关系,E-R图中属性也可以转换成关系属性
9.C源程序中能标识的数制包括
在C语言中整型常量可以用十进制、八进制、十六进制等形式 但是不包括二进制
10.格式控制符
再输入多个数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。 输入格式: 12a34b<CR> 输出结果: 12,a,34,b
11.break语句
default语句在switch语句中可以省略;
switch语句中并非每个case后都需要使用break语句;
break语句还可以用于for等循环结构中
12.指针
double a, *p = &a;
“* ” 是一个指针运算符也是一个说明符 但是不是一个间址运算符25
定义语句中的p只能存放double类型变量的地址
定义语句中,*p = &a把变量a的地址作为初值赋给指针变量p
25
13.数据类型
xy如果都是double类型 那么输入时的格式字符应为 "%lf"
14.函数调用问题
#include<stdio.h>
void fun(int a,int b){
int t;
t=a;
a=b;
b=t;
}
main(){
int c[10]={1,2,3,4,5,6,7,8,9,0};
for(int i = 0;i<10;i+=2)
fun(c[i],c[i+1]);
for(int i = 0;i<10;i++)
printf("%d",c[i]);
printf("
");
}
程序的运行结果是:1,2,3,4,5,6,7,8,9,0
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值法相地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值并没有变化。
15.数据打印问题
#include<stdio.h>
main(){
int x[3][2]={0},i;
for(i =0;i<3;i++)
scanf("%d",x[i]);
printf("%3d%3d%3d
",x[0][0],x[0][1],x[1][0]);
}
若运行时输入: 2 4 6 <回车> 输出结果为 2 0 4
解释:输入的3个数据2,4,6 分别赋值给了x[0][0],x[1][0],x[2][0]
16.字符型指针变量赋值
char *s; s = "Olympic";
char s[] = {"Olympic"} ;//初始化数组 或者
char s[] = "Olympic";
注意:字符数组可以在定义的时候初始化,不可以再定义数组后,对数组名赋值(数组名是常量,代表数组首地址) 还有字符数组的大小要在看得见的字母前提下额外加1 因为包含了 " " 标志。 例如:char s[>=8就可以了] = {"Olympic"}
17.解释函数的功能
int fun(char *s){
char *t = s;
while(*t++);
t--;
return (t-s;)
}
说明:
首先char *s 结束一个字符型数组的首地址并将这个首地址赋给另一个字符型指针char *t ,while(*t++) 不断循环直到*t为 “ ” 再将t-1,这时字符指针t只想字符串的最后一个字符,又因为s指向字符数组的收地址即字符串的首地址所以return(t-s) 便是返回字符数组中字符串的长发度。
18.静态局部变量
int f(int n);
mian(){
int a = 3,s;
s=f(a);s=s+f(a);
printf("%d
",s);
}
int f(int n){
static int a = 1;
n+=a++;
return n;
}
输出程序结果: 9
说明:在静态存储区分配存储单元,在程序整个运行期间都不释放。所以第一次调用函数执行n+=a++ 时a先与n相加再进行自增。n的值为4,调用f(a) 函数时n的返回值为n=3+2=5,此时a的值为3了 所以s的值为9
19.宏定义概念
宏替换没有数据类型限制;宏定义写在函数的花括号外边,作用于为其后的程序,通常在文件的最开头;宏名一般是用大写,但不是必须大写;宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
20.位操作
例子:
int a = 1,b=2,c;
c=a^(b<<2);
执行后,c的值为 9
说明:b为2,二进制为00000010 执行左移两位操作后为00001000,然后与a 00000001 做异或操作结果为00001001 等于9
注意:在C语言中没有<> 运算符 ; 在赋值语句中不能data2=(2,6); 应该是data2={2,6} 在看题目的时候注意标点符号