1《C语言程序设计》教学基本知识点第一章C语言基本知识1.C源程序的框架尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。2.C语言源程序的书写规则:(1)C源程序是由一个主函数和若干个其它函数组成的。(2)函数名后必须有小括号,函数体放在大括号内。(3)C程序必须用小写字母书写。(4)每句的末尾加分号。(5)可以一行多句。(6)可以一句多行。(7)可以在程序的任何位置加注释。3.语句种类语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。(1)流程控制语句流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。(2)表达式语句表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。(3)函数调用语句函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。(4)空语句空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。(5)复合语句复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。4.运算符用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。5.表达式表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。表达式的种类有:算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号2表达式(顺序表达式)、条件表达式、指针表达式。6.数据的输入/输出C语言本身没有输人/输出语句,数据的输入/输出是通过调用库函数来实现的。第二章数据类型知识点划分数据类型的意义是编译系统对每个不同类型的数据在内存中分配的字节数不同,不同类型的数据可以按规定参加不同类型的运算。1.C语言的数据类型数据类型有:整型、字符型、实型单精度型、双精度型、构造类型数组类型、结构体类型、共用体类型、枚举类型、指针类型、空类型,其中整型、实型、字符型是C语言中的基本类型。2.各种类型数据的定义方法定义形式:数据类型变量名1,变量名2,……变量名n;3.常量与变量(1)常量——在程序执行期间其值不变的量。它不能被赋值。(2)变量——在程序运行期间其值可以改变的量。4.各种类型数据的混合运算各类数据运算前会自动转换成同一类型。规律如右图示:从右向左的箭头表示必定的转换,如float型数据运算前化成double型,以提高运算精度,结果也为double型,short或char型数据运算前化成int型,结果也为int型;从下向上的箭头表示转换方向是向级别高的靠拢。5.强制类型变换当我们需要对数据进行类型变换,而机器又不能自动完成时,就要用强制类型变换,形式为:(数据类型符)(被转换对象)。第三章选择知识点C语言中实现选择结构的控制语句有两种:条件分支语句if和开关分支语句switch。1.if语句的三种形式:(1)if(表达式)语句;(2)if(表达式)语句1;else语句2;(3)if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…elseif(表达式n)语句n;2.开关分支语句switch(1)形式switch(表达式){casee1:语句1;break;casee2:语句2;break;casee3:语句3;break;……caseen:语句n;break;default:语句n+1;}(2)功能当表达式的值等于e1时,执行语句1;当表达式的值等于e2时,执行语句2;3……当表达式的值等于en时,执行语句n;当表达式的值与常量e1、e2……en谁都不等时,就执行default后的语句第四章循环知识点循环就是在程序执行过程中,反复多次的执行同一段程序。C语言中有三种循环语句。1.while循环语句形式为:while(表达式){循环体};执行过程是:先计算表达式的值,当表达式的值非0时就执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。2.do--while循环语句形式为:do{循环体}while(表达式);执行过程是:先执行循环体一次,再判断表达式的值,当表达式的值非0时就再执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。3.for循环语句形式为:for(表达式1;表达式2;表达式3){循环体}4.三种循环语句的比较三种循环语句可以完成同一件事,可任选其一。使用while和do--while循环时,要提前给循环变量赋初值。而for循环是在表达式1中赋初值的。while循环和for循环都是先判断条件后执行循环体,有可能一次也不执行循环体,do--while循环是先执行循环体,后判断条件,即循环体至少也得执行一次。for循环不限于计数循环,其循环条件可以是逻辑表达式和字符表达式等。5.循环嵌套三种循环控制语句可以互相嵌套,即在一个循环体内部又可以出现另一循环,这种嵌套在理论上来说可以是无限的。注意必须是一个循环完整的套住另一个循环。6.break语句break语句只能出现在三种循环语句和switch多分支语句中,其作用是用来中断这四种语句的执行。当程序执行到break语句时,会跳出break语句所在的循环或switch分支,而直接执行紧跟在它们后面的语句。7.continue语句continue语句只能出现在三种循环语句中,当程序执行到continue语句时,其作用是提前结束本次循环,自动跳过循环体中后半部剩余的语句的执行,而直接回到循环条件判断。根据判断的结果决定是否继续执行下次循环。8.goto语句goto语句是一种非结构化语句,其作用是使程序的执行无条件的转移到某一处。使用格式为:goto标号;利用goto语句与if条件语句配合,也可以实现条件循环。C语句允许在任何语句前添加标号,作为跳转目标,标号的构成是标识符后面加一个:。第五章数组知识点数组就是同类型的一批数据的集合,用一个变量名存放,区分各元素的办法是用下标。41.一维数组类型说明符数组名\[数组长度\];(1)数组命名要符合标识符的命名规则。(2)数组名后的括号必须是方括号,不能是圆括号。(3)数组长度必须是正整数,可以是个表达式,但不能有变量,C语言不支持动态数组。(4)数组长度表示数组中元素的个数(5)数组元素的下标从0开始数,所以最大下标是数组的长度减1。2.多维数组(以二维为例)类型说明符数组名\[第一维长度\]\[第二维长度\];(1)数组命名要符合标识符的命名规则。(2)数组名后的括号必须是两个方括号,定义时不能写成inta\[3,4\];。(3)数组长度必须是整型常量表达式。(4)第一维长度表示数组行数,第二维长度表示数组列数。(5)每个数组元素都有两个下标,第一维表示该元素所在的行,第二维表示该元素所在的列,每一维的下标都从0开始数。二维数组的初始化:C语言规定只有静态数组和外部数组才允许在定义时赋初值,赋初值形式如下:static类型说明符数组名\[第一维长度\]\[第二维长度\]={初值表};二维数组的引用:二维数组不能整体引用,要引用数组的单个元素,形式为:数组名\[下标\]\[下标\]和普通变量的使用无任何区别。3.字符数组C语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据类型为字符型的数组。(1)字符数组的定义形式:char数组名\[数组长度\];因为C语言中的整型数据和字符型数据是相通的,所以也可以这样定义:int数组名\[数组长度\];(2)字符数组的初始化:给字符数组的初始化有两种方式,一种是用字符常量,另一种是用字符串。形式如下:staticchar数组名\[数组长度\]={字符常量表};staticchar数组名\[数组长度\]={字符串常量};4.数组与函数数组经常作为函数的参数,数组做函数的参数有两种形式,一是数组元素做函数的参数,一是数组名做函数的参数,当用数组名做函数的实参时传送的是首地址。5.常用的字符串处理函数C语言提供了一些处理字符串的标准函数,用以完成一些常见的操作。对以下几个函数要掌握其功能和调用形式。(1)gets(字符数组名)此函数功能是从键盘输入一串字符,回车后送到字符数组中,注意定义数组时数组长度要足够大。(2)puts(字符数组名)此函数功能是将字符数组的内容输出到屏幕上。(3)strcat(字符数组名1,字符数组名2)此函数功能是将字符数组1中的’\\0’去掉后将字符数组2的内容连接到字符数组1的末尾。(4)strcpy(字符数组名1,字符数组名2)函数功能是将字符数组2的内容(包括’\\0’)拷贝到字符数组1中,字符数组2处也可以是字符串常量。strcpy函数可以实现拷子串。(5)strcmp(字符数组名1,字符数组名2)函数功能是两个字符串(ASCII码)比大小。(6)strlen(字符数组名)此函数功能是求字符串的长度,注意不包括’\\0’。(7)strlwr(字符数组名)此函数功能是将字符串中的所有大写字母都变成小写。(8)strupr(字符数组名)此函数功能是将字符串中的所有小写字母都变成大写。5第六章函数知识点每个C源程序都是由函数组成的,一个主函数和若干个其它函数,C语言程序设计的基础工作就是函数的具体编写,C语言中的函数就相当于其它高级语言中的子程序。1.函数的概念函数就是一个数据加工厂,从函数外部接收数据,在函数内部加工处理,然后得到一个结果返回给外部的调用者。所以函数就是对语言功能的扩充,对函数的调用就是对功能的调用。2.标准函数各种高级语言都定义了一些标准函数,C语言中的标准函数称为库函数,是将一些基本的、常用的功能编成了函数,供大家使用方便。使用库函数时必须把它的头文件用#include命令包含进来,每个库函数的功能及对应的头文件都会在手册中给出。3.自定义函数C语言也允许用户自己编写函数以实现C库函数中没有提供的功能,称作自定义函数。4.定义函数C语言规定每个函数都要独立定义,函数定义不能嵌套。函数定义的形式:数据类型函数名(形参表)形参说明语句序列{说明语句序列可执行语句序列}5.函数调用函数调用的形式是:函数名(实参表)。当实参表中有多个参数时,要用逗号隔开,若被调函数无参数,调用时小括号也不能省。函数调用过程是:将实参的值传给形参,在函数体内进行加工处理,然后由return语句将函数值返回调用处。5.全局变量和局部变量局部变量:在函数内部定义的变量称为局部变量,只在本函数中有效。全局变量:在函数外部定义的变量称为全局变量,它的作用范围是从定义开始到本文件结束。6.动态存储与静态存储内存中的用户数据区分为动态存储区和静态存储区,动态存储区是指程序运行期间给变量临时分配存储单元,变量用完后立即释放单元的区域,动态存储区放的是函数的形参、自动变量、函数调用期间的现场保护数据和返回地址。静态存储区是指程序运行期间给变量分配固定的存储单元,放的是全局变量和局部静态变量。一个变量除了它的数据类型以外还有存储类型,定义一个变量时应该