计算机二级c语言知识点总结(OK)[1]

二级C语言基础知识点总结

第一章 1,函数是从主函数(main())开始执行,回到主函数(main())结束; 2,一个程序的编译是从第一个函数(语句)开始,到最后一个函数(语句)结束; 3,算法的特性:有穷性,确定性,有一个或者0个输入,有一个或者多个输出;有效性 4,算法(程序)的几个结构:选择结构,顺序结构,循环结构 5,函数的结构:函数首部和函数体。C程序由函数构成,函数由语句构成。 6,函数运行的三个步骤及生成文件:编译(.c源文件)、连接(.obj目标文件)、运行(.exe可执行文件)。 第二和六章 1,int类型是4个字节,float是4个字节,dooble是8个字节,char类型是1个字节。 2,数据类型分为:基本类型(整型,实型,字符型,枚举型),指针类型,构造类型(结构体类型,数组类型,共用体类型),空类型 (空类型合法哦,不要忘记了这个特殊哦) 3,变量的地址是确定的,变量变的地方只是地址里面的值。 4,用户标志符,由数字,字母,下划线构成,第一个不能是数字,但是32个关键字除外。 5,注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768 6,长整形(long)表示方法是在数字后面加L,如果一个变量a=3,那么表示的是一个整形的3,如果是a=3L,那么就是长整形的3;当分别以%o,%ld,%x (8进制,长整形,16进制)输出的时候,结果没有前面的0,0X,和后面的L 例:int a=075,b=ox14;long int c=5L; printf(“%o,%x,%ld”,a b c); 结果为(75,14,5) 7,当出现’\0’的什么时候为结束,什么时候为八进制的转义字符: 当’\0’后面有1-7之间的数字的时候为转义字符;其他的时候为字符串结束标志,注意转义字符有哪些(参考书第二章) 这样一个例题 若 strlen(”abc\089”)=3 strlen(“abc\012”)=4 8,强制转换不会改变一个变量的值,只是改变其作用的那个表达式的值。 9,++,――,当++,――,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;当++,――,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,――结合性是右结合,若i+++j等价于(i++)+j; 10,复合运算符要注意当等号后面接的是表达式的时

候要把表达式看成一个整体即x *=y+8等价于x=x*(y+8),y+8是一个整体 11.C语言的常量表示共有几种:整型(十进制、八进制、十六进制),实型(小数形式、指数形式),字符(单引号引起来的一个字符),字符串(双引号引起来)。 第三章 1,格式输入和输出的时候,注意格式。要严格按照题目的格式进行操作。(在做题的时候尤其是读程序写结果的时候要细心哈!) 2,%d,%md,%m..nd, %e,以及相应的几种格式是什么意思,参考第三章格式字符表格。 3,赋值语句,复合语句,空语句。 第四章 1,关系运算符,>,<,<=,>=,= =,!= ,==和!=优先级最低,主意=与==的区别:=是赋值的意思,表达式的值是对变量赋的值,==是关系运算符,关系运算表达式的值为0或者1. 2,逻辑运算符,&& ,||,!在这几个中优先级!> && > ||,优先级是体现在结合性上而不是运算的先后性上。例如 a=b=c=1;d=++a||++b&&++c在这个里面&&最高那就是加粗部分先看成一个整体,运算顺序还是从++a开始,即做完这个运算后,可以依次判断出后边的运算式子没有必要计算了,所以d=1,a=2,b=1,c=1

3,if语句基本格式:○1有else的情况是:if(表达式)

语句;else语句;(注意有分号哦),○

2没有else的情况是:if(表达式)语句;当有多个if和else的时候if是与其后最近的没有配对的else结合;注意,当函数作为if里面的表达式的时候即if(printf(“*”))的时候,则是以函数的返回值判断if的真假,printf输出以1个字符则返回为1,所以这个if是真的; 4条件表达式,? : ;右结合性,是从右往左结合,即是以最后一个?开始结合,但是计算顺序仍然是从左到右(这个牵涉到++,--问题)(参考书) 5,switch语句,switch语句只有碰到break或者做到最后一个语句才结束,case和default语句都只是入口。 第五章 1,while语句基本格式是while(表达式)语句;注意在while()后面没有;号,当函数或者赋值表达式放在while的()中时与if的判断方法一样,时候函数的返回值或表达式值的逻辑值; 2,do{ }while();语句和while语句的区别在于前者先做后判断后者是先判断后做,这个知识点多参考书上。 3,for语句,例如:for(i=1;i<100;i++) s=s+i;注意for括号的后面没有;号,

当有两个for语句即嵌套的for循方式 环的时候 例如: (1)for(i=0;i<n;i++) for(i=1;i<4;i++) scanf(“%c”,&a[i]); for(j=0;j<5;j++) s=s+i ; 这个时候是先做i=0;然后判断i;然后做加粗的部分,即是把加粗部分看成一个整体做完之后才会回到i++;所以s=s+i ;这个语句做了20次。 4,总结if,for,whlie,后面如果没有{}的时候,即是只有一个简单的语句的时候,if,for,whlie的作用效力范围是到与之最近的分号结束;当有{ }的时候即是把{ }看成一个整体,控制范围是整个{ }里面的所有语句。 5,break是结束整个循环;contine结束本层循环;具体参考书(课本上相关的例子很重要哦,一定要掌握) 第八章至第十章(重点哦!!!!!!) 1,维数的判断,当*,[]前面有int ,char,float等常见的类型名的时候表示是在定义,一个 * 或者[]表示升一维,当表达式前面没有int ,char,float的时候则是在引用(或称为使用)一个*或者[ ]表示降一维; 2,注意这样一些东西:int a[3][3],**p=a则, a[0]等价于*p表示的是这个2维数组的第一行或者说是这个2维数组的首元素的地址;a[i]等价与*(p+i)都表示是数组的第i行或者是第i行的首元素的地址;所以要引用这个a数组的元素应该用a[i][j]或者**p 3,对一个数组的输入输出总结 当数组是int(整形的时候) 一个有n个元素的1维数组:输入 for(i=0;i<n;i++) scanf(“%d,&a[i]”); 输出 for(i=0;i<n;i++) printf(“%d”,a[i]);注意int

类型要以%d的格式 一个有n行m列的2维数组:输入:for(i=0;i<n;

i++)(这里i控制行,j控制列)

for(j=0;

j<m;j++)

scanf(“%d”,&a[i][j]); 输入:for(i=0;i<n;

i++) for(j=0;j<m;j++) printf(“%d”,a[i][j]);(注意在输入的时候才有&符号,输出的时候没有) 一个字符串数组即 char a[10];对这个的输入有两种(2)gets(a); scanf(“%s”,a)(注意这两种方

式的括号里面的只能是一个数组名)

输出也对应有两种方式:(1),for(i=0;i<n;i++) printf(“%c”, a[i]); (2)puts(a);printf(“%s”,a);注意这两种方式的括号里面的只能是一个数组名; 4,对一个有n个元素的数组的遍历(既是说从第一个成员访问到最后一个成员)有以下两种方式: 1, for(i=0;i<n;i++) 2,for(i=0;a[i]!=’\0’;i++) a[i]; (都是指从a[0]访问到a[n-1]) a[i]; 参考书上。 5,对字符串的操作注意:sizeof是一个系统关键字,不是函数,求其后边的参数占用的内存空间,strlen 求字符串中有多少有效字符。 注意这个例题:char a[30]=“abc\0b”; sizeof(a)=30 ; sizeof(“abc\0b”)=6; strlen(a)=3 strlen(“abc\0b”)=3 ; 6, *p++ 表达式中p与++先结合,取完值之后地址指向下一个元素的地址;*++p则是直接输出第二个元

素,指针输出完之后,也指向了下一个元素的地址 7,char a[10]; while(a[i])和while(a[i]!=‘\0’)都是表示当a数组不结束的情况下继续循环,一般就是

指访问整个数组 8,自编函数实现求字符串的长度:

int fun(char *a) int

fun(char *s) { int k; { char *p;

p=s whlie(a[k]) whlie(*p) k++; p++;

retrun(k-1); } retrun(p-s); }

第七、十一和十二章 1,分清形参和实参的区别:(1)形参是在定义或声明

中,实参是在引用当中;当函数名前有int ,float, char等类型名时是定义或者声明,但是要排除省略类型名的情况;一般引用出现在主函数中,(2)形参是不确定的

值,因此不能为常量,实参是确定的值所以可以为常量。

2,当实际参数是一个变量的时候,实参向形参传递值,只是个简单的值传递,不会改变实参的值;当是实参是地址传递的时候就要改变 例:(1),int sub(int x,int y)

{ int c=x;x=y;y=c;} void main()

{ int a=3,b=2;sub(a,b);

printf(“%d,%d”,a,b);} 结

果是 3,2

(2),int sub(int* x,int *y)

{int c=*x;*x=*y;*y=c;} void main()

{int a=3,b=2;sub(&a,&b);

printf(“%d,%d”,a,b);} 结

果是 2,3

3,局部变量和全局变量;注意分清各自的作用范围;参考书相关例子。

4,注意形参和实参必须赋值兼容,也就是说形参和实参维数必须一样;注意区别viod和return;当主函数里面带参数的形式,main(int argc,char *argv[])中argc是表示参数的个数,argv这个数组储存的是具体的参数个数。例,

void main(int argc,char *argv[]) { char **p ;

while(――argc) { *p=argv[argc]; puts(*p); }

} 若输入为 china Beijing flie 则

结果为:flie Beijing ;(这个知识点可以看看,了解下) 5,注意函数的调用以及静态变量;参考各次卷子中关于这个方面的题。

6,函数的递归调用(很重要)。

第十三和十四章

1,宏替换的时候只是简单的字符替换,不要加任何东西,宏名中不能包含空格;

例:#define xx(m) m*m ?? int i=5;

i=i+xx(4+5);

结果为 i=5+4+5*4+5=34;

2,宏替换是在预编译的时候进行,所以不占用程序运行时间;宏名是无类型的;

3,结构体变量的长度是各个成员长度的和;当结构体指针和数组的时候注意分清 . 和->的区别;参考书上。 4,共用体变量的长度是由成员中的最长的成员决定; 5,链表的题就掌握模拟考试题中的一道选择题就可以了;第十四章的其他内容,还是要去看书了解 第十五和十六章

1,位运算符有 | (或)即只要有一个1就是1, &

(与)要全部为1才为1 ^(异或)要不相同才为1 ;注意的是当向左移动n位就是乘以2的n次方;向右移动n位就是除以2的n次方。

2,文件,c语言中可以认识两种文件存储类型(1),文本文件(2),二进制文件; 3,打开文件操作注意语句 if((fp=fopen(“文件名”,“r”))==NULL);当等于NULL的时候就不能打开;注意文件打开之后必须关闭,即是fclose(fp);这两个必然是成对出现;

4,文件在什么情况下结束(1),fp==EOF的时候结束fp!=EOF的时候不结束。

(2),当feof(fp)返回值

为0时不结束,返回非零时就是结束; 5,一般填空就是上面的加粗部分。

6,w,r,a分别表示对文本文件的读,写,追加;fputs(ch,fp)指将ch变量输出到文件fp中;ch=fgets(fp)指的是从文件中得到一个字符赋给变量ch;fread或fwrite(buffer,size,num,fp)中,buffer指的是文件读出/写入的数据的地址,是一个数组名或者指针;size,指读出或者写入每个数的字节数;num指读出和写入多少个数;fp指文件指针。

M Zhang的话:

这些只是基础知识的重点,目的是帮助大家复习基础知识(记住这个只是基础的一部分,仅仅是基础,各个基础知识的运用请大家多参考发的卷子和书后面的习题),大家还是争取要把书细细的看上2遍以上,最后祝

大家都能顺利的过二级。

 

第二篇:计算机二级C语言个人易错题知识点总结

字符串:双引号“”中无内容,也为字符串,空字符串。内存中存储\0

字符常量:‘’中无内容,不为字符。‘\n’字符常量,转义字符,表示字符标记。 一个字节等于二进制的8位,字符以二进制方式存储。

计算机中最小的存储单位是位,1或0

整型常量

十进制为整数1,2,3.。。。。

Printf中格式控制符控制输出格式,八进制均为整数。

十六进制为正数。

整型在内存中以补码形式存储

字符型常量也是整型常量

2147483648超出整型范围 输出时前面加负号,可变为%u无符号整型控制4294967295最大值,超出时,则为数据溢出。

%d范围-2147483648~2147483648

%u 范围0~4294967295

%l 范围-2147483648~2147483647

%lu 范围0~4294967295

整型实型在内存中的存储以补码的形式,正数的补码是他的原码,二进制位。

位运算运用补码附属的补码是将该式的绝对值的二进制形式按位取反再加1

补码转换成整型,将补码各位取反,把得到的二进制数乘以-1,把得出的数据-1.得所求整数。

变量

标识符字母,数字,下划线,开头为字母或下划线,标识符是区分大小写的。

表达式后不带; 带;为语句

强制转换必须加()如(int)

逗号表达式中 y=((x=a+b),(b+c))最后y的值为b+c 顺序计算逗号表达式

左移 高位丢弃,低位补0

右移 为正数时左边(高位补0),为负数时左边补1

位运算的优先级:取反》左移》右移》与》异或》或

函数

编程的基本思想,高内聚低耦合。

Switch

如果表达式得住与所有case后的常量表达式均不相同,则执行default下的语句。Case后的表达式的值必为整型,switch也一样。Break与到后退出整个switch

递归

函数调用本身就叫做递归调用。

数组

数据类型说明符 数组名 【常量表达式】

可把基本类型与数组类型同时定义 数组的初始化,初始化的列表中的数值个数至少有1个并且不多于数组的大小,同样,数组大小也至少是1.

Int num【0】=0,该数组只有这一个元素。

指针

指针常量 int a &表示a的地址,他是一个常量。

指针变量可以实现本身的值的改变。而数组不能实现。

*(p--)相当于a【i--】

*(++p)相当于a【++i】

*(--p)相当于a【--i】

二维数组的指针

类型说明符 (*指针变量名)【长度】 长度表示二维数组的列数。

文件

定义文件指针的格式 FILE*指针变量标识符

FILE *fp

定义文件指针变量fp,表示fp是指向FILE结构的指针变量,通过fp文件指针就可以读写指向的文件。

Fopen函数用来打开一个文件,格式 文件指针名=fopen(文件名,文件操作方式) 文件指针名 必须是被说明为file类型的指针变量

文件名 表示被打开文件的文件名,可以用字符串常量或字符串数组

文件操作方式 只读,只写,读写,追加。。。。

C语言是由函数组成的 函数是由语句组成的 算法+数据结构=程序

注意一个汉字是两个字节 VC是采用右结合的,即编译器这样计算的:y = ( 13 > 12 ? 15 : 6 > 7 ? 8 : 9) = 13 > 12 ? 15 : (6 > 7 ? 8 :9)了,这样就是15。

.(a>=0 && b>=0)&&(a<0 && b<0)为空集

(a>=0&&b>=0)||(a<0&&b<0)?能正确表示a和b同时为正或同时为负的逻辑表达式

算符优先级如下(由高到低):! ,/, + - , &&。int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值为1

在函数中默认存储类型说明符的变量应该是内部静态存储类型。

关系表达式的值是逻辑真或者假。?只有B是表示判断。

.两个指针变量的值相等时,表明两个指针变量是 占据同一内存单元。

C语言程序总是从main( ) 函数开始执行。

有且只有一个根节点;每个节点最多有一个前件,最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表,栈与队列,线性链表都是线性结构,而二叉树是非线性结构。

线性表是一种线性结构,由n(n》0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个节点没有前件,最后一个节点没有后件。其他节点有且只有一个前件和后件。 C基本数据类型有:整型,实型,枚举型,字符型。

实型数据只有十进制。

C语言中无定义逻辑类型。

线性表常用两种存储模式,顺序和链式存储结构。

软件需求分析阶段的工作包括,需求获取,需求分析,编写需求规格说明书和需求评审。

C语言十分大小写的,switch是关键字,Switch不是关键字。

整型可以使十进制,八进制,十六进制形式输出。

空格是一个字符常量,而且单引号中的空格是不能够省略的。字符常量只能包含一个字符。单引号中的大写字母和小写字母代表的是不相同的字符常量。所有的字符常量作为整型量来处理,在计算机内部,其对应的整形数值是asc2码值。

文件由数据流的形式组成,可以按数据存放的形式分为二进制文件和文本文件。C语言既能读写文本文件,又能读写二进制文件。

数据字典是各类数据描述的集合,包括数据项,是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据项,也可以是数据结构,表示某一处理过程的输入输出;数据存储,处理过程中存取的数据,常常是手工凭证,手工文档或计算机文件。

数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。 软件结构宽度:整体控制跨度(最大模块数的层)

白盒测试基本原则是 保证所测模块中每一个独立路径至少执行一次,保证所测模块所有判断的每一分支至少执行一次。保证所测模块每一循环都在边界条件下至少执行一次,验证所有内部数据结构的有效性。

白盒测试:逻辑盖测试,基本路径测试。

数据的存储结构是指数据的逻辑结构在计算机存储空间中的存储形式。一种数据结构可以根据需要采取不同的存储结构,常用的存储结构有顺序和链式存储结构。采用不相同的存储结构,其效率也是不同的。

类是对一类具有相同属性和方法的对象的描述,属性用于描述对象的状态,方法用于表示对

象的行为,基于同一类产生的两个对象是可以分别设置自己的属性的。

需求分析最终产生的是软件需求规格说明书。

一个c语言源程序无论包括多少个函数,总是从main函数开始执行,从main函数结束。 Sizeof(double)是一个整型表达式

intx?x=11/3;y=5; ?

printf("%%d,%%%d/n",x,y) ???

为什么输出的是%d %3,不是%3 %%5呢?因为前面的%%会输出一个百分号,然后再输出一个字符d和一个逗号,后面的%%会再输出一个百分号,后面的%d才是格式控制符,对应于变量列表中的第一个变量x

函数的返回值类型一般与return语句中的表达式值的类型一致,但c语言也允许不同,这是,系统以函数定义时的返回值类型说明为准,并自动将return语句中表达式的值转换为函数的返回值类型。

Break语句可以出现再循环体内及switch语句体内,不能用于其他的语句,continue语句的作用世界树本次循环,即跳过循环体中尚未执行的语句,而接着转去判断循环条件是否成立,从而确定下一次循环是否继续进行。再循环体内使用break语句会使循环提前终止。从多层循环嵌套中退出,可以使用goto语句 或break语句。

宏定义:仅仅是符号替换,不是赋值语句。通常用大写字母,但不是必须大写。双引号中出现宏名不替换。使用宏定义可以嵌套,后定义的宏可以使用先定义的宏。

数据独立性包括物理独立性和逻辑独立性,看物理独立性是指用户程序与存储在磁盘上的数据库中数据时相互独立的。数据在磁盘中怎样存储是由dbms管理的。应用程序处理的是数据的逻辑结构,这样当数据的物理存储改变的时候,应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变了,用户程序也可以不变。

静态测试包括人工测试和计算机辅助分析方法。

Dfd图(数据流图)是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须

完成的逻辑功能,他是需求分析阶段的图形工具。盒式图(n-s),问题分析图(pad)和pdl是详细设计的常用工具。

在函数定义中,由于函数没有说明其类型,座椅系统默认一律自动按整形处理。 在最坏的情况下,冒泡排序所需要的比较次数为n(n-1)/2;

数据字典的作用是对数据流图中出现的被命名的元素进行解释。

需求获取的目的是确定目标系统的各方面需求,主要任务,建立获取用户需求的方法框架,并支持和监控需求获取的过程。

需求分析是对获取的需求分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。 编写需求规格说明书,作为需求分析的阶段成果,可以为用户,分析人员,和设计人员之间交流方便。可以直接支持目标软件系统的确认,又可以作为控制软件开发过程的依据。 需求评审是对需求分工作的复审,验证需求文档的一致性,可行性,完整性,有效性。 数据库一旦发生故障,有数据库管理员执行数据恢复。

数据模型描述的内容包括数据结构,数据操作,数据约束。

程序设计是一门技术,需要相应的理论,技术,方法和工具来支持。程序设计的任务包括编写程序代码并上机调试,确定所用算法,确定所用数据结构。

函数定义不可以嵌套,函数调用可以嵌套。

Typedef说明符不会为对象预留存储空间。

函数内部的extern声明表明,被声明的对象的存储空间定义在其他地方。在函数外部,说明声明的对象具有外部链接。

Static将声明的对象说明伪静态存储类,这种对象可以用在函数内部或函数外部,咋爱函数内部,该说明符将引起存储空间分配,具有定义的作用,在函数外部,该说明符间引起声明对象位具有内部链接。若将其定义为static类型,其初始值默认为0.

关系代数式关系操纵语言的一种传统表示形式,他一集合代数为基础发展起来的。但他的运算对象和运算结果军事关系,这些新关系仍可以使用同样的代数运算进一步操作。 关系代数运算中,五种基本运算,并,差,笛卡尔积,选择,投影。

数据库有两层映像,即外模式/模式和模式/内模式映像,模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。

在定义线性的链表中,若只含有一个指针域开存储下一个元素地址,成这样的链表为单链表或线性链表。

在链式存储中,要求每个节点有两部分组成,一部分用于存放数据元素值,成为数据域,另一部分用于存放指针,成为指针域。其中指针域用于指向该节点的前一个或者后一个节点。 数据库的三级模式是指数据库系统的外模式,模式,内模式,一个数据库可以有多个外模式,但只有一个内模式和模式。

数据管理技术发展三个阶段,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理,在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统,在数据系统阶段,出现了同意的管理数据的专门软件系统,数据管理系统。 关系数据库管理系统的专门关系运算包括选择,投影,连接。

二分法只适用于顺序存储的有序表。

设计准则,提高模块独立性,模块规模适中,深度,宽度,扇出和扇入适当,使模块的作用域在该模块的控制域中,应减少模块的接口和界面的复杂性,设计成单入口,单出口的模块,设计功能可预测的模块。

数据独立性是数据与程序间的互不依赖性,数据库中数据独立与应用程序而不依赖与应用程序。

在声明一个变量后,如果未显示的对其进行赋值,则它的值是一个随机数。

队列只允许在一端删除,在另一端插入的顺序表,在队列中,允许插入的一端叫做队尾,允许删除的一端叫做对头。

关系模型允许三类数据约束。

实体完整性约束:该约束要求关系的主键中属性值不能为空。这是数据库完整性的最基本要求。

参照完整性约束:该约束是关系之间相关联的基本约束。他不允许关系引用不存在的元组。

在关系中的外键要么是所关联关系中实际存在的元组。要么就为空值。

用户定义的完整性约束:用户定义的完整性约束就是针对某一具体关系数据库的约束条件,他反应某一具体应用所涉及的数据必须满足定义的语句要求。

逻辑表达式的优先级:非》与》或

传数值的话,形参的变化不会影响实参的值。

传地址的话,形参的改变可能会因其实参的改变。

·

相关推荐