您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计复习知识总结孙亚飞
C语言程序设计复习知识总结孙亚飞第一章软件工程概述及程序设计基础1、“冯-诺依曼”计算机“存储程序原理”一条计算机指令完成一个基本操作:操作码+操作数软件:程序(一组精心编排的指令)+数据+文档2、软件工程:问题定义可行性研究需求分析总体设计详细设计编码测试编码:编辑→(源程序.c)→编译→(目标程序,二进制代码.obj)→连接→(可执行程序.exe)→测试运行3、程序设计语言机器语言(二进制代码)汇编(符号语言)高级语言(CC++C#JAVA)4、程序设计方法(思想)面向过程的结构化程序设计方法:“自顶向下,逐步求精”三种基本结构:顺序选择循环程序=算法+数据结构算法特征:确定性有穷性一个或多个输出零个或多个输入有效性面向对象的程序设计方法:对象属性方法类5、常用算法累加累乘求最大值或最小值求两数的最小公倍数或最大公约数(辗转相除法)交换两个数查找符号化第二章C语言概述1、程序基本单位:函数2、标识符:变量名、函数名、标号只能由字母(大小写敏感)、数字、下划线组成,且第一个字符只能为字母或下划线第三章数据类型及表达式1、标示符:字母、数字或下划线组成,对大小写敏感,且第一个字母只能为字母或下划线,不能使用关键字作为标示符。32个关键字:Autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile2、数据类型:charintfloatdouble字节:1248整型数据:八进制:由数字0开头十六进制:由数字0和字母x开头intshort:2long:4浮点型数据:十进制小数形式:必须包含小数点和数字如.314,0.指数形式:e(或E)前必须有数字,e之后的指数必须为整数如1E-30E0float(4B,有效位6~7)double(8B,有效位15~16)默认为double类型字符型数据:字符常量用单引号括起来表示转义字符:\n换行\b退格\t水平制表,即横向跳格\’单引号\ddd1-3位八进制数代表的字符\xhh1-2位十六进制数代表的字符\f换页\r回车\v垂直制表\”双引号\0空,表示字符串常量的结束字符也可用反斜线加八或十六进制ASCII码表示,如‘\101’同‘A’字符串常量双引号3、/:除法运算,如5/3,整数相除为整数,小数部分舍去%求余只能用于整数相除求余,结果符号和被除数相同-5%3//-24、强制类型转换(类型名)(表达式)如:a=(double)10第四章语句及程序流程控制1、结构化程序设计三种基本结构:顺序、选择、循环2、基本输入输出函数:putchargetcharprintfscanf字符输出函数putchar(c);//c为字符型或整型的常量或变量,只能一个字符输入函数getchar();//括号内不能有内容,输入的字符不能带单引号格式输出函数printf(格式控制,输出表);//格式控制为用双引号括起来的格式控制转换字符串,有三种形式格式说明:由“%”后跟格式字符组成。格式字符说明常用形式d带符号十进制输出整数%[-][0][m][1]do无符号八进制整数(不输出前导符0)%ox无符号十六进制整数(不输出前导符0x)%xu无符号十进制%uc字符形式输出一个字符%[m]cs输出字符串%[-][m][.n]sf以小数点形式输出单、双精度实数,隐含输出6位小数%[-][0][m][.n]fe标准指数形式输出单、双精度实数,数字部分为6位小数%[-][m][.n]eg选f或e中宽度较小的输出实数,不输出无意义0%g附加格式说明字符说明—左对齐0(数字)输出空位用0填充m(一个正整数)输出数据字段宽度,if实际位数大于m,按实际;小于m,补0或空格.n(一个正整数)实数,表示输出n位小数;字符串,表示截取字符个数l(字母)输出长整形整数如果想输出字符“%”,应在“格式控制中”用连续两个“%”表示格式输入函数scanf(格式控制,地址表)//格式控制同printf,地址表由地址组成,&为取地址运算符格式字符不用u,附加格式说明字符常用形式%[*][m][l]格式字符*表示本输入项在输入后不赋给相应的变量,即跳过它对应的数据3、条件表达式表达式1?表达式2:表达式34、多分支选择语句switch(表达式){case常量表达式1:语句1;........case常量表达式n:语句n;default:语句n+1;}break加在必要的case分支语句后,可跳出switch结构;用在循环体中,可立即终止所在循环多case执行相同语句,前面相同语句可省,不加分号,但不能合写为一行5、循环结构:whiledo....whileforbreak;//只能用于switch和循环语句,对于多重循环,只能退出包含该语句的那一层结构continue;//终止本次执行,继续下一次循环第五章数组1、C语言的数据类型分为基本数据类型(字符型、整型、实型)、构造数据类型(数组类型、结构体类型、公用体类型)、指针类型和空类型。2、一维数组类型名数组名[数组长度]存放字符串的字符数组可简写,如charstr[6]=”hello”注意:字符串结束标志‘\0’也是一个元素例:inta[10];//a+i就表示a[i]的地址&a[i]3、二维数组中a[i][j]地址的表示:&a[i][j]a[i]+j&a[0][0]+4*i+ja[0]+4*i+j//设一行中有4个元素4、字符数组初始化时,如果初始化表达式少于数组宽度,剩余位自动置为空字符,即是字符串的结束标志。5、字符串的输入输出printfscanfgetsputsgetcharputchargets和puts只有一个参数,就是一个内存地址6、标准字符串处理函数#includestring.h(1)strlen(s)统计字符串s中字符的个数(不含终止符‘\0’),返回字符串s的长度(2)strcpy(s1,s2)把字符串s2中的内容拷贝到字符串s1中去,返回s1strncpy(s1,s2,n)把s2中前n个字符拷贝到s1中,返回s1注:不会自动拷入字符串结束标志,需手动给s1放置字符串结束标志(3)strcat(s1,s2)把s2的内容连接到s1后,s1成为一个新串,返回s1strncat(s1,s2)把s2中前n个字符内容连接到s1后,返回s1,如果n超过s2实际长度,以实际长度为准(4)strcmp(s1,s2)比较s1和s2的大小,返回:s1s2,返回正数;s1=s2,返回0;s1s2,返回负数。注:大小值比较对应字符的ASCII码值strncmp(s1,s2,n)(5)mencmp(s1,s2,n)比较s1和s2前n个字节,返回:s1s2,返回正数;s1=s2,返回0;s1s2,返回负数。注:如果两字符串相同且n大于字符串长度,memcmp会继续比较字符串结束标志后面的内存单元,直到不相等或达到次数n;而strcmp只要比到字符串结束标志就会结束。(6)memcpy(s1,s2,n)将s2中前n个字符拷贝到s1中,返回s1menmove(s1,s2,n)将s2中前n个字符拷贝到s1中,返回s1区别如:chars[]=”hello,world”;memmove(s+2,s,10);//结果为“hehello,worl”考虑内存区域重叠问题memcpy(s+2,s,10);//结果为“hehehehehehe”s[12]=’\0’;(7)Memset(s,c,n)把字符串s中前n个字节内容设置为c(8)strlwr(s)把字符串s中大写字母转换为小写字母strupr(s)把字符串s中小写字母转换为大写字母补充:sizeof(s)求数组s占用的空间字节数第六章函数1、定义函数的变量注意:形参变量名不能重复,每个变量名必须单独定义;函数内定义的变量名不能与形参列表变量名重名;函数体内变量定义语句必须写在函数体开头部分函数类型一般默认为int型2、形参:定义函数时实参:调用函数时主调函数被调函数Return语句:函数终止执行,并且返回到调用此函数的语句3、局部变量:在函数内定义的变量,其作用范围局限于此函数内部全局变量:定义在任何函数之外的变量,作用范围是从定义处直到文件末尾同名时,局部变量优先使用4、C语言的变量有4种存储类别:auto(自动变量)只能在函数中定义,只有局部变量能定义static(静态变量)从被分配存储空开始,直到程序结束才被释放,局部和全局变量都可定义如:staticintc=3;register(寄存器变量)只允许局部变量和少量形参定义;地址不可访问;类型必须为int、char、和指针型。频繁使用的变量放在寄存器中可以提高程序的执行效率extern(外部变量)只能用于全局变量的声明。在全局变量定义处之前访问实参形参返回值该变量,可用extern声明,扩展全局变量的作用域。注:在多文件中使用外部变量时,要考虑该变量的值可能在其他文件中被修改5、内部函数:一个函数只能在本文件中可见而不能被其他文件调用static类型标识符函数名(形参表)外部函数:可以被其他文件调用,extern可省。在需要调用外部函数的文件中,必须先使用extern关键字声明外部函数的原型第七章预处理命令1、编译预处理命令:放在函数之外,以“#”开头并且末尾不加分号的命令预处理:指在编译前所做的处理,由预处理程序负责完成C提供多种预处理功能:如宏定义(#define)、文件包含(#include)、条件编译2、“宏”:用一个标识符来表示一个字符串。被定义为“宏”的标识符称为“宏名”“宏代换”或“宏展开”:编译预处理时,所有宏名用字符串去代换,分为有参和无参两种3、#undefM//终止宏M的作用域宏定义不占用运行时间,只占用编译时间,而函数则占用运行时间4、条件编译(3种)#ifdef标识符#ifndef标识符#ifdef常量表达式程序段1程序段1程序段1#else#else#else程序段2程序段2程序段2#endif#endif#endif第八章指针1、存储器中的一个字节称为一个内存单元,内存单元的编号称为地址,通常把这个地址称为指针。存放地址的变量称为指针变量,一个指针变量的值就是某个内存单元的地址(指针)。指针:一个变量的地址指针变量:专门存放变量地址的变量2、指针变量定义类型说明符*变量名//*表示这是一个指针变量,类型说明符表示该指针变量所指向的变量的数据类型。3、指针变量的赋值只能赋予地址。&:地址运算符*:指针运算符(或“间接访问运算符”),表示指针变量所指的变量,其后必须跟指针变量。注:在指针变量说明中,*是类型说明符,表示其后的变量是指针类型;而表达式中出现的*则是一个运算符,表示指针变量所指的变量。4、动态存储分配的几个相关函数malloc(size)在内存的动态存储区中分配一个长度为size的连续存储空间,返回值是指针(指向字符),值是该分配区域的起始地址。如果此函数未能成功执行,则返回0。calloc(n,size)分配n个长度为size的连续空间,返回分配域的起始地址(指向字符)。free(ptr)释放由ptr指针变量(指向字符型的指针变量)指向的内存区域。5、移动指针:指针变量加或减一个整数,功能:使指针变量指向相邻的存储单元指针比较:两个指针指向同一个对象,可以进行,=,,=,==,!=等关系运算。6、字符串常量是在内存中一段连续空间存放,字符串中每个字符占一个字节存放空间。7、指针可以指向一个函数,一个函数在编译时被分配一个入口地址,这个地址就称为函数的指针。指向函数的指针定义:类型说明符(*指针变量名)(函数形参);//函数形参可省如char(*p)()返回指针的函数定义类型名*函数名(参数表)如char*m(a,b);8、指针数组:若干指向同类对象的指针构成的
本文标题:C语言程序设计复习知识总结孙亚飞
链接地址:https://www.777doc.com/doc-2908137 .html