您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 南师大教育技术学考研笔记_C语言程序设计
iNote_C语言程序设计第一章:C语言概述1.C语言特点语言简洁、紧凑,使用方便、灵活(32关键字|9控制语句|书写形式自由|主要用小写字母)运算符丰富(34运算符|括号、赋值和强制类型转换等都作为运算符来处理)数据类型丰富,具有现代语言的各种数据结构(整型、浮点型、字符型、数组类型、指针类型、结构体类型、共同体类型等)指针类型,十分灵活和多样化具有结构化的控制语句C语言完全是模块化和结构化的语言语言限制不太严格,程序设计自由度大(“限制”&“灵活”限制严格,就失去灵活性;而强调灵活,就必然放松限制)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作生成目标代码质量高,程序执行效率高(一般只比汇编程序生成的目标代码效率低10%~20%)编写出的程序可移植性好(比汇编语言好)2.BASIC和FORTRAN语言都容易些对操作系统和系统实用程序以及需要对硬件进行操作的场合,用C语言明显优于其他高级语言,有的大型应用软件也用C语言编写。NUIX操作系统与C语言不可分|在数据结构课程中,多采用C语言作为背景语言。3.C++语言&C语言C++是为了解决编写大型软件的问题而产生的,学起来比C困难得多|不是所有的人都去编写大型软件。在发达国家的大学中,C语言仍然是大学生的一种基本选择|掌握了C语言,在学C++不会太困难。4.知识点总结1./**/是C语言中的注释方式,亦可以使用//单行注释。2.函数是C程序中的基本单位,有利于实现程序的模块化。第2章程序设计的灵魂——算法1.什么是算法算法是对数据的操作|广义地说,为了解决而采取的方法和步骤。2.算法的特性有穷性|准确性|0或N个输入|1或N个输出|有效性3.流程图的构成1)表示相应操作的框;2)带箭头的流程线;3)框外必要的文字说明。4.基本结构的特点1)只有一个入口;2)只有一个出口;3)结构内的每一部分都有机会被执行到;4)结构内不存在“死循环”。5.结构化程序设计结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计的基本思路:把一个复杂的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。(结构化程序设计的方法用来解决人脑思维能力的局限性和被处理问题的复杂之间的矛盾)实现方法:1)自顶向下;2)逐步细化;3)模块化设计;4)结构化编码。其中,1)和2)的过程是讲问题求解由抽象逐步具体化。第3章数据类型运算符与表达式1.数据类型:1)基本型(整型|字符型|浮点型|枚举型);2)构造类型(数组类型|结构体类型|共同体类型);3)指针类型;4)空类型。2.常量(直接常量|字符常量)#defineNameC_string简单替换,一改全改。3.变量1)以一个名字对应代表一个地址;2)变量名对大小写敏感;3)长度最好不超过8个字符;4)先定义,后使用。4.整形数据1)正数的补码是它的原码,负数的补码是它的“反码+1”;2)int的范围是-32768~32767,unsignedint的范围是0~65535,long的范围是-2147473648~2147483647;3)signed可以省略;int溢出时,“周而复始”。5.浮点型数据1)十进制小数形式|指数形式(即科学计数法);2)浮点型数据是按照指数形式存储的;3)在TC中,float占4字节,有效数字6~7位,double占8字节,有效数字15~16位,longdouble占16字节,有效数字18~19位;4)应避免大数与小数直接相加减,否则会“丢失”小数;5)float型变量只接收7位有效数字,其余的忽略不计,double类比之。6.字符型数据1)编译系统用1个字节来存储1个字符;2)字符型数据与整形数据是相通的,两者可以相互赋值;3)C语言中没有字符串变量,字符串的存储必须借助数组。7.各种数据类型间的混合运算1)+-*/运算中2个数中有一个数为实数或者双精度数,结果就是double;2)%左右必须都是整数;3)2个整数相除,结果向零取整;4)强制类型转换的优先级仅次于括号;5)在结果输出之前,所有的运算应当结束。8.赋值表达式1)把浮点数据赋值给整型时,舍弃浮点数的小数部分;2)把double赋值给float时,截取前7位有效数字,存放到float变量中,但应注意数值范围不能溢出;3)把unsigned数据赋值给signed时,可能出错;4)不同类型的整形数据之间的赋值归根结底就是:把存储单元中的存储形式直接传送。9.逗号运算符和逗号表达式1)逗号表达式的值是最后一个单元的值;2)逗号的作用有2——连接逗号表达式和连接函数的形式参数。第4章C语言顺序程序设计1.C语句的5种类型控制语句|函数调用语句|表达式语句|空语句|复合语句2.赋值语句赋值表达式左侧的值就是表达式的值(表达式有值,语句没有值)3.字符数据的输入输出1)putchar(c):向终端输出一个字符,c是字符变量或整型变量;2)getchar():从终端得到一个字符,注意没有&取址符。4.格式输入与输出1)printf(格式控制,输出表列)a.格式符%m.n*,m表示数据的最小宽度,n分2种情况——对实数,表示输出n位小数|对字符串,表示截取的字符的个数|如果m与n有冲突,确保n全部输出;b.%f以小数形式输出单、双精度数,默认输出6位小数,可以通过n更改;c.%g,G在%f和%e之间选择最少的那一个输出格式;d.默认为右对齐,用负号可以更改|小数点占据1列|e占1列;e.由于实数在内存中的存储误差,%f输出可能与原值不同(floatf=123.456;printf(”%f”,f);2)scanf(格式控制,地址列表)a.scanf的格式控制中多了*,表示本输入项在读入后不赋给相应的变量;b.可以指定输入数据所占的列数,系统自动按它截取所需数据(取最先输入的);c.%c格式输入符时,空格字符和“转义字符”都作为有效字符输入;d.%d遇到3种情况输入结束:空格、回车或跳格|按指定的宽度结束|非法输入;第5章选择结构程序设计1.关系表达式和逻辑表达式1)关系表达式的值是可运算的“0”或“1”;2)并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算才能求出表达式的解时,才执行该运算符,如a&&b&&c…3)逻辑非(!)的优先级仅次于括号()。2.条件运算符:条件运算符的结合方向是“自右向左”,如ab?a:cd?c:d…3.switch语句1)执行完1个case后面的语句后,流程控制转移到下1个case继续执行;2)switch必须与break联用,否则会出现冗余。第6章循环控制1.goto语句及其构成的循环1)相当于锚标记,先定义后使用;2;goto语句可读性差,无规律,只有在多层循环的内层跳到外循环时才会使用。2.while循环和do…while循环1)两者都是当条件判断为真实,才能持续循环,结果有可能相同,有可能不同;2)while内的变量不能字处理(自加或自减),只能进行条件判断;3)while循环能完成的for都可以;4)do…while循环在while语句后要加分号。第7章数组1.一维数组的定义和引用1)定义数组时必须指定数组的长度,且中括号只能放置常量;2)一旦对数组进行初始化,未赋值的元素默认为0或’/0’。2.二维数组的定义与引用1)二维数组被看一种特殊的一维数组,它的元素又是一个一维数组;2)定义时如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。3.字符数组1)如果初值个数小于数组长度,则其余的元素自动定位空字符;2)字符数组的输入输出:printf(“%s”,c)|scanf(“%s”,str);scanf函数输入时,系统把空格字符作为输入的字符串之间的分隔符。4.字符串处理函数(string.h)1)puts(str1)字符串中允许包含转义字符,且输出完成后换行;2)gets(str2)的输入结束标志是回车键;3)strcat(str1,str2)把str2连接到str1的后面,返回新的str1的地址;4)strcpy(str1,str2)&strncpy(str1,str2,n)把str2复制到str1中,str2可以是字符串常量;5)不能把str2直接赋值给str1,只能使用strcpy函数;6)strcmp(str1,str2)相等为0,大于为正,小于为负,且字符串的比较只能使用strcmp函数;7)strlen(str),返回str的实际长度,不包含’\0’;8)strlwr(str)&strupr(str)改大小写。第8章函数1.函数概述1)1个C程序由1或N个程序模块组成,每一个程序模块作为一个源程序文件;2)1源程序文件由1或N个函数及其他有关内容(如命令行、数据定义等)组成;3)程序编译时,以源文件(而非函数)为单位;4)所有函数都是平行的,即分别定义,相互独立,可以相互调用但不可嵌套定义;5)函数可以理解为一种“复杂的运算”。2.定义函数1)如果定义函数时不指定函数类型,系统隐含指定函数类型为int型;2)在程序开发过程中,会定义一些空函数,后期扩充。3.函数参数与函数的值1)在定义函数时,函数名后面括号的变量是形参,在主调函数中调用函数时,函数名后面括号中的参数(可以是常量),是实参;2)形参未调用时,形参不分配内存,只有被调用时才分配,调用结束后形参的内存单元释放;3)形参和实参的类型必须相同或复制兼容(把实参自动转化为形参的类型,否则报错);4)C语言中,实参单向传值给形参;5)函数中可以有N个return,执行到reutrn就返回;6)函数值类型和return语句中表达式的值不一致时,以函数类型为准。4.函数的调用的方式1)函数语句;2)函数表达式;3)函数参数。5.函数声明&函数原型1)函数调用的条件:已定义|已声明或包括在文件头部或定义在被调用之前;2)函数声明中可以只写形参类型,不写形参名(注意顺序);3)函数的定义是指对函数功能的确立,包括指定函数名、函数值类型、形参及其类型、函数体等,是一个完整的、独立的函数单位,而函数的声明则是把函数的名字、类型以及形参类型、个数和顺序通知编译系统,以便按此规定对照检查;4)main以外的其他函数之间的互调也要声明。6.函数的递归调用1)递归问题可以分为“回推”和“递推”2个阶段;2)解决递推问题的关键在于数学建模,写出数学上的函数。7.数组作为函数参数1)数组名作为实参和形参时,传递的是数组首元素的地址;2)数组元素可以作为实参;3)形参数组可以不指定大小,只写空的方括号即可;4)数组作为形参时,双向传值;5)多维数组名作为函数参数时,第1维的长度可以省略或与实参不同,其余的则不可。8.局部变量1)函数内部定义的变量是内部变量,即局部变量;2)不同函数中可以使用相同名字的变量,它们代表着不同的对象,互不干扰;3)复合语句中定义变量,这些变量只在本复合语句中有效,此复合语句称为“分程序”或“程序块”;4)形参也是局部变量。9.全局变量1)函数之外定义的变量是外部变量,即全局变量;2)全局变量增加了函数间数据联系的渠道,一般变量名的第1个字母大写;3)建议不适用全局变量:伴随程序执行的全程,生存周期长|降低了函数的通用性|降低了函数的可读性|全局变量遇到局部变量就会被屏蔽。------10.变量的存储类别1)2大类4小类:静态存储类,动态存储类||自动的(auto),静态的(static),寄存器的(register)和外部的(extern);2)auto类型:凡没有声明为static的局部变量(函数内的变量)都是自动变量,其中auto可以省略;3)static变量(静态局部变量):属于静态存储类别,在静态存储区内分配存储单元,且只赋一次值,以后每次调用函数时不在重新赋初值,而只是使用上次函数调用结束后的值;4)定义局部变量时不赋初值时,静态局部变量自动赋初值0或者空字符,而对自动变量而言,得到的是一
本文标题:南师大教育技术学考研笔记_C语言程序设计
链接地址:https://www.777doc.com/doc-6039468 .html