版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言整理资料必背
1、结构化程序是由顺序结构、选择结构(分支结构)、循环结构三大结构组成。
2、读程序时都要从main()入口,然后从main中第一行程序依次顺序往下读。
3、计算机数据在电脑中保存是以二进制形式存放的。
4、bit是位,二进制中的。或1。byte是指字节,一个字节=八位。
5、编译预解决不是C语言,不占运营时间,不要加分号。
6、defineP13.1415926;这个写法是错误的,后面一定不能出现分号。
7、每个C语言程序中main函数有且只有一个。
8、在函数中不可以再定义函数。但是函数中可以再调用函数。
9、算法:可以没有输入,但是一定要有输出。
10、break可用于循环结构和switch语句。
11、逗号运算符的级别最低,赋值的级别倒数第二。
第一章C语言的基础知识
第一节
I、c语言编写的程序称为源程序,又称为编译单位。
2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。
3、一个C语言程序有且只有一个main函数,是程序运营的起点。
第二节
1、VC是软件,用来运营写的C语言程序,上机考试的系统为VC6.0。
2、每个C语言程序写完后,都是先编译,后链接,最后运营。(.c-^.obj-^.exe)这
个过程中注意.c和.obj文献时无法运营的,只有.exe文献才可以运营。(常考!)
第三节
1、标记符(必考内容):
合法的规定是由字母,数字,下划线组成。并且第一个必须为字母或则是下划线,不可以是数字。
2、标记符分为关键字、预定义标记符、用户标记符。
关键字:不可以作为用户标记符号,都是小写。main、define,scanf、printf都不是关键字。
迷惑你的地方If是可以做为用户标记符。由于If中的第•个字母大写了,所以不是关键
字。
预定义标记符:背诵definescanfprintfinclude。记住预定义标记符可以做为用户标记符。
用户标记符:基本上每年都考,具体请见书上习题。
第四节
1、十进制转换成二进制、八进制、十六进制。
2、二进制、八进制、十六进制转换成十进制。
第五节
1、C语言中只有八、十、十六进制,没有二进制。但运营时,所有进制都要转成二进
制来解决。
a、C语言中的八进制规定要以0开头。018的数值是非法的,八进制不可以出现8。
b、C语言中的十六进制规定要以Ox开头。要看懂Oxff。
2、小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。
a、1.()在C语言中可写成“1.”
b、0.1在C语言中可以写成“.1”
3、实型数据的合法形式:
a、2.333e-l就是合法的,且数据是2.333X10"。
考试口缺:e前e后必有数,e后必为整数。请结合书上的例子。
4、整型一般是4个字节,字符型是1个字节,双精度一般是8个字节:
longintx;表达x是长整型。
unsignedintx;表达x是无符号整型。
第六、七节
核心:表达式一定有数值!
1、算术表达式:*,/,%,考试重点为/和%这两个。
考试一定要注意:“/”两边都是整型的话,结果取整。3/2的结果就是1.
“/”假如有一边是小数,结果为小数。3/2.0的结果就是0.5
“%”符号请一定要注意是余数,考试最容易算成了除号。
“%”符号两边规定是整数。不是整数就错了。
2、赋值表达式:赋值表达式的结果是最左边的数值,a=b=5;该表达式为5,常量不可
以赋值。
1、intx=y=10:;错啦,定义时,不可以连续赋值。
2、intx,y;
x=y=10;对滴,定义完毕后,可以连续赋值。
3、intx=7.7;对滴,x就是7。
4,floaty=7;对滴,x就是7.0。
5、赋值的左边只能是一个变量。x+y=10;这个写法是错的。
3、复合的赋值表达式:
inta=2;
a*=2+3:运营完毕后,a的值是12。
一定要注意,一方面要在2+3的上面打上括号。变成(2+3)再运算。
4、自加表达式:
自加、自减表达式:假设a=5,++a(是为6),a++(为5);
考试口诀:++在前先加后用,++在后先用后加。
5、逗号表达式:优先级别最低(表达式的数值逗号最左边的那个表达式的数值)
(2,3,4)的表达式的数值就是4。取最右边的值。
z=(2,3,4)(整个是赋值表达式)这个时候z的值为4。
z=2,3,4(整个是逗号表达式)这个时候z的值为2。
6、补充:
1、空语句不可以随意执行,会导致逻辑错误。
2、注释是最近几年考试的重点,注释不是C语言,不占运营时间,没有分号。不可
以嵌套!
3、强制类型转换:
a、一定是(int)a不是int(a),注意类型上一定有括号的。
b、注意(int)(a+b)和(int)a+b的区别。前是把a+b转型,后是把a转型再加b。
4、三种取整丢小数的情况:
1)inta=1.6;2)(int)a;3)1/2;3/2;
结果a为1整个数值取整0和1
第八节
字符:有单单和转义字符之分。
1)字符数据的合法形式::单单(单引号里面单个字符)
O的ASCA数值表达为48,'a'的ASCII数值是97,A的ASCII数值是65。
一般考试表达单个字符错误的形式:‘6S"1"记住口诀:单单。
字符是可以进行算术运算的,记住:,0'-0=48
大写字母和小写字母转换的方法:‘A,+32=£互相之间一般是相差32。
2)转义字符:单引号里面用\加上此外字母形成新的组合。
转义字符分为一般转义字符、八进制转义字符、十六进制转义字符。
一般转义字符:背诵\0、\n、\\\"、Wo
八进制转义字符:)14「是合法的,前导的0是不能写的。
十六进制转义字符:'\x6d'才是合法的,前导的0不能写,并且x是小写。
3、字符型和整数是近亲:两个具有很大的相似之处
第九节
1)位运算的考察:会有一到二题考试题目。(必考题型)
例1:chara=6,b;b=a«2;解题时:先要把a化成二进制,再做位运算。
例2:一定要记住,异或的位运算符号”…。0A1=1.0A0=0o
例3:在没有舍去数据的时候,<<左移一位表达乘以2;>>右移一位表达除以2。
第一早
第一节:数据输出(一)(二)
I、使用printf和scanf函数时,要在最前面加上#include"stdio.h"
2、printf可以只有一个参数,也可以有两个参数。(选择题考过一次)这么背就可以。
3、printf(“第一部分”,第二部分);
把第二部分的变量、表达式、常量以第一部分的形式展现出来!
4、printf("a=%d,b=%d”,12,34)考试重点!
记住:是将第二部分的12和34以第一部分的形式在终端(也就是黑色的屏幕上)
显示。
考试核心为:一模同样。在黑色屏幕上面显示为a=l2,「634
printf("a=%d,\nb=%d",12,34)那么输出的结果就是Ja=12.
b=34
5、intx=017;(一定要弄清楚为什么是这个结果!过程很重要)
printf("%d",x);15printf("%o",x);17
printfx);017printfx);f
printfx);Oxf
6、一定要背诵的
格式说明表达内容格式说明表达内容
%d整型im%c字符char
%ld长整型longint%s字符串
%f浮点型float%0不带前导0八进制
%lf浮点型double%#0带前导0的八进制
%%输出一个百分号%x不带前导Ox十六进制
%5d输出规定有五位%#x带前导Ox的十六进制
7、举例说明:
printf("%2d”,123);第二部分123有三位,大于第一部分指定的两位,原样输出123
printf("%5d”,123);第二部分123有三位,小于第一部分指定的五位,左边补两个空格123
printf1.25);小数规定补足6位的,没有六位的补0,.结果为1.250000
printf(“%5.3f”,1.25);第一部分指定小数三位,整个五位,结果为1.250(小数点算一位)
printf(a%3.1fM,1.25);第一部分指定小数一位,整个三位,结果为1.3(要进行四舍五入)
第三节数据输入
1、scanf("a=%d,b=%d",&a>&b)(考试超级重点)
考试核心为:一模同样。以第一个部分双引号里面为输入标准形式。
终端输入为:a=12>b=34才可把12和34对的赋值给a和b。
2、scanf("%d,%d",x,y);scanf的第二个部分一定要是地址(或是指针变量)!
scanf("%d,%d",&x,&y);注意写成这样对的!
3、特别注意指针在scanf的考察(近几年重点)
例如:inlx=2;int*p=&x;
scanfx);错误scanfp);对的
scanf("%d”,&p);错误scanf("%d",*p)错误
4、指定输入的长度(考试重点)
终端输入:1234567
scanf("%2d%4d%d”,&x,&y,&z);x为12,y为3456,z为7
终端输入:1234567由于1和2中间有空格,所以只有1位给x
scanf("%2d%4d%d”,&x,&y,&z);x为1,y为2345,z为67
5、字符和整型是近亲:
intx=97;
printf("%d",x);结果为97
printf("%c",x);结果为a
6、输入时候字符和整数的区别(考试超级重点)
scanf("%d",&x);这个时候输入1,特别注意表达的是整数1
scanf("%c",&x);这个时候输入1,特别注意表达的是字符T,ASCH为整数48。
7、补充说明:
1)scanf("%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据。
2)putchar,getchar函数的考察。前是输出一个字符,后是获得一个字符。
3)互换两个数t=x;x=y;y=to当成单词去背。
第三章
特别要注意:1、C语言中是用韭“表达逻辑真,史表达逻辑假的。
2、C语言有构造类型,没有逻辑类型。
3、关系运算符号:注意<=的写法,==和=的区别!(考试重点)
4、if只管后面一个语句,要管多个,请用大括号!
1)关系表达式:
a、表达式的数值只能为1(表达为真),或0(表达假)。
如9>8这个关系表达式是真的,所以9>8这个表达式的数值就是1。
如7<6这个关系表达式是假的,所以7<6这个表达式的数值就是0
b、考试最容易错的:就是intx=l,y=0,z=2;x<y<z是真还是假?带入为1<0<2,从数学
的角度出发肯
定是错的,但是假如是C语言那么就是对的的!由于要1<0为假得到0,表达式就
变成了0<2那
么运算结果就是1,称为了真的了!
c、等号和赋值的区别!一定记住“=”就是赋值,“==”才是等号。做错了,我一定会
强烈鄙视你!
2)逻辑表达式:共有&&||!三种逻辑运算符号
核心:表达式的数值只能为1(表达为真),或0(表达假)。
a、注意短路现象。考试比较喜欢考。具体请见书上例子,一定要会做例1和例2。
b、表达x小于。大于10的方法。(考试非常容易错的)
0<x<10是不行的(一定记住),他永远为真。(0<x)&&(x<10)才是对的表达方法。
3)if语句
a、else是与最接近的if且没有else的语句匹配。
b、互换的程序写法:t=X;X=Y:v=t;
c^if(a<b)t=a;a=b;b=t;
if(a<b)(t=a;a=b;b=t;)两个的区别,考试多次考到了!
d、单独的if语句:if(a<b)匚a;
标准的if语句:if(a<b)min=a;
嵌套的if语句:if(avb)
if(b>c)prindTok。;
多选一的if语句if(a==t)printf("a’');
elseif(b==t)printf("b”);
elseif(c==t)printf(“c”);
elsepritnfd'd''):
通过习题,要熟悉以上几种if语句!
4)条件表达式:表达式1?表达式2:表达式3
a、考试口诀:真前假后。
b、inta=1,b=2,c=3,d=4,e=5;
k=a>b?c:d>e?d:e;求k的数值时多少?答案为5
5)switch语句:(我用了一年的时间才弄懂,考试重点)
a)执行的流程一定要弄懂!上课时候具体的过程讲了,请自己一定弄懂!
b)注意有break和没有break的差别,break在C语言中就是分手,一刀两断的意思。
c)switch只可以和break一起用,不可以和continue用。
d)switch(祎----K是整型常量,字符型常量,枚举型数据。
{case见….不可以是变量。
case2:....
)
e)switch是必考题型,请大家一定要完毕书上的课后的switch的习题。
6)goto语句,是关键,不可以随便使用,已经淘汰。
第四章
1)三种循环结构:
a)for();while();do-while()三种循环。
b)for循环当中必须是两个分号,千万不要忘掉。
c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。
d)do-while()循环是至少执行一次循环“
2)break和continue的差别(考试重点,一定会考)
break:是打破的意思,(破了整个循环)所以看见break就退出一层循环。
continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,
跳到循环开始,然后判断循环条件,进行新一轮的循环。
3)嵌套循环
就是有循环里面尚有循环,这种比较复杂,要一层一层耐心计算,一般记住两层是解决
二维数组的。
4)while((c=getchar())!=,\n,)和while(c=getchar()!=,\n,)的差别
先看a=3!=2和(a=3)!=2的区别:考试注意点:括号在这里的重要性。
(!=号的级别高于=号所以第一个先计算3!=2)第一个a的数值是得到的1;第二个
a的数值是3。
5)如何整除一个数:i%5==0表达整除5i%2==0表达整除2,同时表达是偶数!
6)输入123,输出321逆序输出数据
inta=l23;
while(i!=0)
(
printf("%d”,i%10):
i=i/10U
7)for只管后面一个语句:
inti=3:
for(i=3;i<6;i++);循环控制这个空语句,空语句是循环体!
printfC#''):请问最终打印几个#号?答案为一个!
8)不断的输入,直到输入#停止输入!不断的输入,直到输入$停止输入!
while((x=getchar())!='#')while((x=getchar())!=’$')
不断的输入,直到碰到?停止输入!
while((x=getcharO)!='?')解说:一定要注意这种给出了条件,然后如何去写的方法!
9)for循环和switch语句的和在一起的考题!
10)多次出现的考题:(超级重点,一定会考)
intk=lintk=l;
while(--k);while(k--);
printf("%d”,k);printf(“%d”,k);
结果为0结果为-I
第五章
1、函数:是具有一定功能的一个程序块,是C语言的基本组成单位。
2、函数不可以嵌套定义。但是可以嵌套调用。
3、函数名缺省返回值类型,默认为into
4、C语言由函数组成,但有且仅有一个main函数!是程序运营的开始!
5、如何判断a是否为质数:背诵这个程序!
voidiszhishu(inta)
{for(i=2;i<a/2;i++)
if(a%i==0)printf("不是质数”);
printf("是质数!”);
)
6、如何求阶层:n!背诵这个程序!
intfun(inln)
{intp=l;
fbr(i=l;i<=n;i++)p=p*i;
returnp;
)
7、函数的参数可以是常量,变量,表达式,甚至是函数调用。
8、函数的参数,返回数值(示意图):
z=x+y;
z就是这个add函数计
算后得到的结果,就
9、一定要注意参数之间的传递。实参和形参之间传数值,和传地址的差别。(考试的重点)
传数值的话,形参的变化不会改变实参的变化。
传地址的话,形参的变化就98%会改变实参的变化。
10、函数声明的考察:
一定要有:函数名,函数的返回类型,函数的参数类型。
不一定要有:形参的名称(可写,可不写,可乱写)。
11、规定掌握的库函数:
abs()、sqrt()、fabs()、pow()、sin()其中pow(a,b)是重点。2?是由pow(2,3)表达的。
第六章
指针变量的本质:放地址。变量三要素:名称、内容、地址。
1、int*p中*p和p的差别:简朴说*p是数值,p是地址!
*P可以当做变量来用,*的作用是取后面地址p里面的数值
p是当作地址来使用。可以用在scanf函数中:scanfp);
2、*p++和(*p)++的差别:(考试重点)
*p++是地址会变化。口诀:取当前值,然后再移动地址!
(*p)++是数值会变化。口诀:取当前值,然后再使数值增长1。
例题:int*p,a[]=(1,3,5,7,9);
P=a;
请问*P++和(*p)++的数值分别为多少?
*p++:自身为3,然后挪到下个地址,地址变动。
(*p)++:自身为3,然后再把3变成4,地址不动。
3、二级指针:
*p:一级指针:存放变量的地址。
**q:二级指针:存放一级指针的地址。
常考题目:intx=7;
int*p=&x,**q=p;
问你:*p为多少?*口为多少?**q为多少?
7P7
再问你:**q二&x的写法可以吗?
不可以,由于二级指针只能存放一级指针的地址。
4、三名主义:(考试的重点)
数组名:表达第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)
函数名:表达该函数的入口地址。
字符串常量名:表达第一个字符的地址。
5、移动指针(经常加入到考试中其他题目综合考试)
char*s="meikanshu”
while(*s){printf*s);s++;}
s++是地址移动,打印了一个字母后,就会移动到下一个字母!
6、指针变量两种初始化(一定要看懂)
方法一:inta=2,*p=&a;(定义的同时初始化)
方法二:inta=2,*p;(定义之后初始化)
p=&a;
7、传数值和传地址(每年必考好多题目)
voidfun(inta,intb)voidfun(int*a,int*b)
{intt;{intt;
t=a;a=b;b=t;t=*a;*a=*b;*b=t;
))
main()main()
{intx=l,y=3,{intx=l,y=3,
fun(x,y);fun(&x,&y)
printf("%d,%d”,x,y);printf("%d,%d”,x,y)
))
这个题目答案是1和3。这个题目的答案就是3和lo
传数值,fun是用变量接受,所以fun中传地址,fun用指针接受!这个时候fun
的互换不会影响到main中的x和y。中的互换,就会影响到main中的x和y。
传数值,形参的变化不会影响实参。传地址形参的变化绝大多数会影响到实参!
8、函数返回值是地址,一定注意这个*号(上机考试重点)
int*fun(int*a,int*b)可以发现函数前面有个*,这个就说明函数运算结果是地址
{if(*a>*b)returna;returna可以知道返回的是a地址。
elsereturnb;
main()
{intx=7,y=8,*max:
max=fun(&x,&y);由于fun(&x,&y)的运算结果是地址,所以用max来接受。
printf(“%d,%dw,)
}
9、考试重要的话语:
指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*P的地方都可以用它等价
的代替。
例如:inta=2,*p=&a;
*p=*p+2;
(由于*p指向变量a,所以指向哪个就等价哪个,这里*p等价于a,可以相称于是a=a+2。
第七章
数组:像停尸房同样,一格一格的!地址连续,类型一致。
1、一维数组的初始化:
inta[5]=(1,2,3,4,5);合法
inta[5]={1,2,3,);合法
inta[]={1,2,3,4,5);合法,常考,后面决定前面的大小!
inta[5]={1,2,3A5,6);不合法,赋值的个数多余数组的个数了
2、一维数组的定义;
inta[5];重要考点,定义数组不可以是变量。
intx=5,inta[x];不合法,由于个数是x,是个变量,非法的,
defineP5inta[P]合法,define后的的P是符号常量,只是长得像变量
3、二维数组的初始化:
inta[2][3]=|1,23,4,5,6);合法,
inta[2][3]={1.2,3A5,};合法,后面一个默认为0。
inta[2][3]=((1,2,3,)(4,5,6));合法,
inta[2][3]={(l,2,}{3,4,5));合法,
inta[2][3]={12,3,4,5,6,7};不合法,赋值的个数多余数组的个数了。
inta[](3]={l,2,3,4,5,6);合法,可以缺省行的个数。
inta[2][]=fl,2,3,4,5,6);不合法,不可以缺省列的个数。
4、补充:
1)数组的重要概念:
a[IO]的讨论。(一维数组的讨论)
1、a表达数组名,是第一个元素的地址,也就是元素a[0]的地址。(等价于&a)
2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。
3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。
a[3][3]的讨论。(二维数组的讨论)
1、a表达数组名,是第一个元素的地址,也就是元素a[0][0]的地址。
2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。
3,a是二维数组名,所以它是行指针,也就是说a+1是跳一行。
4、a[0],a[l],a⑵都是地址常量,不可进行赋值操作,同时它们都是列指针,a[0]+l,a[l]+l,a[2]+l
都是跳一列。
5、注意a和a[0]、a[l],a[2]是不同的,它们基类型是不同的。前者是一行元素,后三者是一列元素。
2)二维数组做题目的技巧:
假如有如3][3]={1,2,3,4,5,6,7,8,9}这样的题目。
环节一:把他们写成:第一列第二列第三列
a[0]-»123一〉第一行
a[l]->456—>第二行
a[2]-»789一〉第三行
环节二:这样作题目间很简朴:
*(a[O]+l)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[OHl|元素,所以是2。
*(a[l]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是元素,所以是6。
一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简朴。
3)数组的初始化,一维和二维的,一维可以不写数字,二维第二个一定要写出列,可以不
写行。
inta[]={1,2}合法。inta[][4]={2,3,4}合法。®inta[4][]={2,3,4}非法。
4)二维数组中的行指针:二位数组名是行指针。
inta[l][2];
其中a现在就是一个行指针,a+1跳一行数组元素。搭配(*)p[21指针
a[0],a[l]现在就是一个列指针。a[O]+l跳一个数组元素。搭配*p[2|指针数组使用
5)尚有记住脱衣服法则:(超级无敌重要)
a[2]变成"*(a+2)a⑵[3]变成,(a+2)[3]~再可以变成"*(*(a+2)+3)
这个思想很重要!
二级公共基础知识总结
请大家认真仔细的背诵该资料,至少要看三遍,划了横线的和方
框的都是重点!
第一章数据结构与算法
1.1算法
邈:是指解题方案的准确而完整的描述。算法不等于程序,也不等计算机方法,程序的编制
不也许优于算法的设计。
算法的特性涉及:
(1)可行性;
(2)拟定性,算法中每一环节都必须有明拟定义,不充许有模棱两可的解释,不允许有多义性;
(3)有穷性,算法必须能在有限的时间内做完,涉及合理的执行时间的含义;
(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算涉及:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:|顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
算法复杂度:解法时间复杂度I和算法空间复亲阉。两个之间没有联系的。
算法时间复杂度[是指执行算法所需要的计算工作量。
算法空间复杂度I是指执行这个算法所需要的内存空间。
1.2数据结构的基本基本概念
数据结构研究的三个方面:
(1)数据集合中各数据元素之间所固有的逻辑关系,即I数据的逻辑结构;
(2)在对数据进行解决时,各数据元素在计算机中的存储关系,即擞据的存储结回:
(3)对各种数据结构进行的运算。
数据结构是指互相有关联的数据元素的集合。
数据的存储结构有顺序、链接、索引等。
线性结构条件:
(1)有且只有一个根结点;
(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3线性表及其顺序存储结构
函殛I是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是
线性的。
在复杂线性表中,由若干项数据元素组成的数据元素称为恒圜,
而由多个记录构成的线性表又称为画。
线性表的顺序存储结构具有以下两个基本特点:
(1)线性表中所有元素的所占的存储空间是连续的;
(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
1.4栈和队列
回是限定在一端进行插入与删除的线性表。
1、先进后出FILO;
1、支持子程序调用;
2、具有记忆功能;
3、可以不用顺序存放数据;
4、只可以在top首部进行操作,bottom是绝对不动的;
5、栈的存放数据的个数为num=(bottom-top)+1:
旗冽是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。
1、Rear指针指向队尾,front指针指向队头。
3、先进先出FIFO,或者是后进后出LILO
2、循环队列里面的个数计算方法:
A、rear>front的时候,num=rear-front;
B、rear<front的时候,num=rear+n-front;
1.5线性链表
数据结构中的每一个结点相应于一个存储单元,这种存储单元称为存储结点,简称陪司。
结点由两部分组成:(1)用于存储数据元素值,称为阪丽;(2)用于存放指针,称为辟碣,
在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之
间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来拟定的。
链式存储方式即可用于表达线性结构,也可用于表达非线性结构。
线性链表的基本运算:查找、插入、删除。
1.6树与二叉树
树是一种简朴的非线性结构,所有元素之间具有明显的层次特性。
在树结构中,没有前件的结点只有一个,称为树的根结点,简称树的根。
每一个结点可以有多个后件,称为该结点的子结点。
没有后件的结点称为叶子结点。
在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。
树的最大层次称为树的深度。
二叉树的特点:(1)非空二叉树只有一个根结点;(2)每一个结点最多有两棵子树,且分别称
为该结点的左子树与右子树。
二叉树的基本性质:必考的题目
(1)在二叉树的第k层上,最多有个结点;
(2)深度为m的二叉树最多有2m-l个结点;
(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;
(4)二叉树中n=no+ni+ri2
满二叉树I是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2k-l个结点深度
为m的满二叉树有2m-l个结点。
完全二叉树I是指除最后一层外,每一层上的结点数均达成最大值,在最后一层上只缺少右边的
若干结点。
二叉树存储结构采用隧式存储结构,对于满二叉树与完全二叉树可以按层序进行顺序存储。
二叉树的遍历:(一般画个图要你把顺序写出来)
(1)|前序遍历|(DLR),一方面访问根结点,然后遍历左子树,最后遍历右子树;
(2)|中序遍历|(LDR),一方面遍历左子树,然后访问根结点,最后遍历右了树;
(3)后序遍历(LRD)一方面遍历左子树,然后访问遍历右子树,最后访问根结点。
1.7查找技术
顺序查找的使用情况:
长度为n的线性表,找出一个数据,最差的情况为比较n次。
长度为n的线性表,找出一个最大数据,最差的情况为比较n-1次。
二分法查找只合用于随身邈的有序表I,
二分查找:对于长度为n的有序线性表,最坏情况只需比较Ilog2nl次。
1.8排序技术
排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。
互换类排序法:(1)冒泡排序法,需要比较的次数为|n(n-l)/2|;
(2)快速排序法,需要比较的次数为|n(n-l)/2|;。
插入类排序法:(1)简朴插入排序法,最坏情况需要M(n-l)/21次比较;
(2)希尔排序法,最坏情况需要6(户2次比较。
选择类排序法:(1)简朴选择排序法,最坏情况需要/n-l)/21次比较;
(2)堆排序法,最坏情况需要6(nlog2n)|次比较。
第二章程序设计基础
2.1程序设计设计方法和风格
注释分悌言性注固和功能性注相语句结构I清楚第一、效率第3不要弄反了。
程序一定规定具有易读性,可读性较好。
程序设计方法有两种,结构化程序设计和面向对象程序设计。
2.2结构化程序设计
结构化程序设计方法的四条原则是:考试重点都要背下来
1.自顶向下;2.逐步求精;3.模块化;4.限制使用got。语句。
注意,这四个特点中,最重要的是模块化。
结构化程序的基本结构和特点:
(1)顺序结构:一种简朴的程序设计,最基本、最常用的结构;
(2)选择结构:又称分支结构,涉及简朴选择和多分支选择结构,
(3)循环结构:可根据给定条件,判断是否需要反复执行某一相同程序段。
2.3面向对象的程序设计
面向对象的程序设计:以对象为核心。
面向对象具有哪些基本概念:
对象、类和实例、消息、、继承、多态性、
面向对象方法的优点:
(1)与人类习惯的思维方法一致;
(2)稳定性好;
<3)可重用性好;
(4)易于开发大型软件产品;
(5)可维护性好。
幽是面向对象方法中最基本的概念,对象是实体的抽象。
面向对象的程序设计方法中的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基
本单位,由一组表达其静态特性的属性和它可执行的一组操作组成。
噩即对象所包含的信息,操作描述了对象执行的功能,操作也称为遹或睡
对象的基本特点:
(1)标记惟一性;
(2)分类性;
(3)多态性;重点
(4)封装性;重点
(5)模块独立性好。
图是指具有共同属性、共同方法的对象的集合。类是对象的抽象,对象是相应类的一个实例。
储网是一个实例与另一个实例之间传递的信息。
消息的组成涉及:
(1)接受消息的对象的名称;(2)消息标记符,也称消息名;(3)零个或多个参数。
质是指可以直接获得已有的性质和特性,而不必反复定义他们。
继承分单继承和多重继承。对象也可以没有继承。
1、单继承指一个类只允许有一个父类,
2、多重继承指一个类允许有多个父类。
多态■怛是指同样的消息被不同的对象接受时可导致完全不同的行动的现象
第三章软件工程基础
3.1软件工程基本概念
计算机软件是涉及幅用、丽及|相关文树的完整集合。
软件的特点涉及:
(1)软件是一种逻辑实体;
(2)软件的生产与硬件不同,它没有明显的制作过程;
(3)软件在运营、使用期间不存在磨损、老化问题;
(4)软件的开发、运营对计算机系统具有依赖性,
(5)软件复杂性高,成本昂贵;
(6)软件开发涉及诸多的社会因素。
软件按功能分为应用软件、系统软件、支撑软伸(或工具软件)。
1、数据库管理系统是系统软件。
2、教务处管理系统是应用软件。
软件危机重要表现在成本、质量、生产率等问题。
I软件工程I是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工
软件工程涉及3个要素:方法、工具、过程。
方法:完毕软件工程项目的技术手段。
工具:支持软件的开发、管理、文档生成。
过程:支持软件开发的各个环节的控制、管理。
软件工程过程是把软件转化为输出的一组彼此相关的资源和活动,包含4种基本活动:
(1)P一一软件规格说明;(2)D一一软件开发;(3)C一一软件确认;(4)A一一软件演进。
I软件生命周期:软件产品从提出、实现、使用维护到停止使用退役的过程。
软件生命周期三个阶段:阿兔反I、I软件开发U运营维护重要活动阶段是:
需求分析是定义阶段。具体设计和概要设计是开发阶段。
软件工程的目的和与原则:
目的:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用
性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
基本目的:付出较低的开发成本;达成规定的软件功能;取得较好的软件性能;开发软件易于移
植;需要较低的费用;能准时完毕开发,及时交付使用。
基本原则:抽象、信息隐蔽、模块化、局部化、拟定性、一致性、完备性和可验证性。
软件工程的理论和技术性研究的内容重要涉及:跃件开发技利和制件工程管叫
软件开发技术涉及:|软件开发方法学|、|开发过程|、|开发工具|和|软件工程环境。
软件工程管理涉及:|软件管理管、|软件工程经济学]、|软件心理学等内函。
软件管理学涉及人员组织、进度安排、质量保证、配置管理、项目计划等。
软件工程原则涉及抽象、信息隐蔽、模块化、局部化、拟定性、一致性、完备性和可验证性。
3.2结构化分析方法
结构化方法的核心和基础是融I化程序设计理网。
需求分析方法有(1)|结构化需求分析方法卜(2)|面向对象的分析的方法
需求分析阶段工作4个方面:
1、需求获取2、需求分析3、编写需求规格说明书(重点)4、需求评审
从需求分析建立的模型的特性来分:|静态分析|和扬帝前。
结构化分析方法的实质:|面向数据流,自顶向下,逐层分解,建立系统的解决流程,以数据流
图和数据字典为重要工具,建立系统的逻辑模型。
结构化分析的常用工具:
(1)|数据流图|;(2)|数据字典|;(3)|鉴定树|;(4)|鉴定表
数据流图:描述数据解决过程的工具,是需求理解的逻辑模型的图形表达,它直接支持系统功能
建模。
数据字典:对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得
用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
数据字典I是结构化分析的核心。
软件需求规格说明书的特点:(核心的是无歧义性)
(1)对的性;(2)无岐义性;(3)完整性;(4)可验证性;
(5)一致性;(6)可理解性;(7)可追踪性。
3.3结构化设计方法
软件设计的基本目的是用比较抽象概括的方式拟定目的系统如何完毕预定的任务,
软件设计是拟定系统的物理模型]。
软件设计展开发阶段最重要的环节,是将需求准确地转化为完整的软件产品或系统的唯一途径。
从技术观点来看,软件设计涉及软件|结构设计|、擞据设计|、|接口设训、|过程设计。。
从工程管理角度来看:|概要设计厢所刷。
软件设计的一般过程:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的
过程设计;穿插进行数据设计和接口设计。
衡量软件模块独立性使用丽桂|和内菊田两个定性的度量标准。
耦合性:对一个软件结构中不同模块之间互连限度的度量。
内聚性:一个模块内部各个元素间彼此结合的紧密限度的度量。
在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内聚,低耦杳「
软件概要设计的基本任务是:
(1)设计软件系统结构;(2)数据结构及数据库设计;
(3)编写概要设计文档;(4)概要设计文档评审。
模块用一个矩形表达,箭头表达模块间的调用关系。
在结构图中还可以用带注释的箭头表达模块调用过程中来回传递的信息。还可用带实心圆的箭头
表达传递的是控制信息,空心圆箭心表达传递的是数据。
结构图的基本形式:基本形式、顺序形式、反复形式、选择形式。
结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。
典型的数据流类型有两种:I变换型I和据务孤
变换型系统结构图由输入、中心变换、输出三部分组成。
事务型数据流的特点是:接受一项事务,根据事务解决的特点和性质,选择分派一个适当的解决
单元,然后给出结果。
具体设计:是为软件结构图中的每一个模块拟定实现算法和局部数据结构,用某种选定的表达工
具表达算法和数据结构的细节。
常见的过程设计工具有:考试重点
1、图形工具(程序流程图)、2、表格工具(鉴定表)、3、语言工具(PDL)。
程序流程图是考试重点,其中->箭头表达控制流,<>菱形表达逻辑条件。
3.4软件测试
软件测试定义:使用人工或自动手段来运营或测定某个系统的过程,其目的在于检查它是否满足
规定的需求或是弄清预期结果与实际结果之间的差别。
软件测试的目的:发现错误而执行程序的过程。
软件测试方法:|静态测试|和雁测试
静态测试:涉及代码检查、静态结构分析、代码质量度量。不实际运营软件,重要通过人工进行。
动态测试:是基木计算机的测试,重要涉及白盒测试方法和黑盒测试方法。
白盒测试:在程序内部进行,重要用于完毕软件内部CA。作的验证。重要方法有逻辑覆盖、基
木基途径测试。
黑盒测试:重要诊断功能不对或漏掉、界面错误、数据结构或外部数据库访问错误、性能错误、
初始化和终止条件错,用于软件确认。
白盒重要方法:|1、逻辑覆盖测试2、基本途径测试。
黑盒重要方法:等价类划分法、2边界值分析法、3错误推测法、4因果图。
软件测试过程一般按4个环节进行(要背先后顺序):
单元测试、集成测试、验收测试(确认测试)和系统测试。
3.5程序的调试
程序调试的任务是诊断和改正程序中的错误,重要在开发阶段进行。
软件调试可分表静态调试和动态调试。
静态调试重要是指通过人的思维来分析源程序代码和排错,是重要的设计手段,
动态调试是辅助静态调试。
调试方法有:(1)强行排错法;(2)回溯法;(3)因素排除法。
第四章数据库设计基础
4.1数据库系统的基本概念
事实上就是描述事物的符号记录。
数据的特点:有一定的结构,有型与值之分,如整型、实型、字符型等。
邈国:长期存储在计算机内部的、有组织、可共享的数据的集合。数据库存放数据是按数据
所提供的数据模式存放的具有集成与共享的特点。
数据库管理系统I:-种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保
护和数据服务等,是数据库的核心。
数据库管理系统提供以下的数据语言:
(1)数据定义语言:负责数据的模式定义与数据的物理存取构建;
(2)数据操纵语言:负责数据的操纵,如查询与增、(M、改等;
(3)数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。
数据语言按其使用方式具有两种结构形式:交互式命令(又称自含型或自主型语言)宿主型语言
(一般可嵌入某些宿主语言中)。
数据库管理员:对数据库进行规划、设计、维护、监视等的专业管理人员。
数据库系统I:由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬
件)、软件平台(软件)五个部分构成的运营实体。DBS是最大的涉及其他所有的。
数据库应用系统|:由数据库系统、应用软件及应用界面三者组成。
数据库发展的三个阶段:人工管理阶段、文献系统阶段、数据库管理阶段。
数据库系统阶段的基本特点:
1、数据的集成性、
2、数据的高共享性与低冗余性、
3、数据独立性(物理独立性与逻辑独立性)、数据统一管理与控制。
数据库系统的三级模式:
(1)概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图;
(2)外模式:也称子模式与用户模式。是用户的数据视图,也就是用户所见到的数据模式;
(3)内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。
一个数据库只有一个内模式,可以有多个外模式。
数据库系统的两级映射:
(1)概念模式到内模式的映射;
(2)外模式到概念模式的映射。
4.2数据模型
数据模型的概念:是数据特性的抽象,从抽象层次上描述了系统的静态特性、动态行为和约束条
件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作及数据约束。
E-R模型的基本概念
(1)|实体卜现实世界中的事物;
(2)瓯:事物的特性;
(3)gg:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。
E-R模型的图示法:(1)实体集表达法;(2)属性表法;(3)联系表达法。
E-R模型的:|矩形表达实体;椭圆表达矩形;棱形表达联系。
关系模型采用二维表来表达,简称困,由表框架及表的元组组成。
1、卜一个二维表就是一个关系。
2、在二维表中凡能唯一标记元组的最小属性称为回画。具有唯一性。
3、元组就是二维表中一行,属性就是二维表表中一列。
4、从所有侯选健中选取一个作为用户使用的键称匡铤|。
5、表A中的某属性是某表B的键,则称该属性集为A的|外键或外宿厂
6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年兰州航空职业技术学院单招《物理》考前冲刺练习含完整答案详解【夺冠】
- 2024-2025学年反射疗法师3级题库检测试题打印附完整答案详解【夺冠】
- 2024-2025学年度粮油食品检验人员模拟试题往年题考附答案详解
- 2024-2025学年度化验员考试黑钻押题附参考答案详解(B卷)
- 2024-2025学年度机械设备制造修理人员通关考试题库含答案详解(研优卷)
- 2024-2025学年医师定期考核考试彩蛋押题附答案详解【轻巧夺冠】
- 2024-2025学年度上海立达学院单招《物理》检测卷含答案详解AB卷
- 2024-2025学年度反射疗法师大赛理论模拟试题含完整答案详解(网校专用)
- 2024-2025学年全国统考教师资格考试《教育教学知识与能力(小学)》经典例题汇编附答案详解
- 2024-2025学年度刑法期末考试模考模拟试题含答案详解【达标题】
- 二手车交易合伙协议
- 2024年江苏信息职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 板材行业销售渠道分析
- 2024地面用晶体硅光伏组件环境适应性测试要求第1部分:一般气候条件
- 合同税率变更补充协议
- 教科版四年级下册科学全册教案
- 苏教版五年级下册数学 列方程解决两步实际问题 教案(教学设计)
- 人教版《体育与健康》水平二 跳跃单元作业设计
- 《煤气安全作业》培训教材
- 函数的零点与方程的解(说课课件)
- GB/T 29061-2012建筑玻璃用功能膜
评论
0/150
提交评论