C语言程序设计复习知识总结_第1页
C语言程序设计复习知识总结_第2页
C语言程序设计复习知识总结_第3页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计复习知识总结孙亚飞第一章软件工程概述及程序设计基础1、“冯-诺依曼”计算机 “存储程序原理”一条计算机指令完成一个基本操作:操作码+操作数软件:程序(一组精心编排的指令)+数据+文档2、软件工程:问题定义可行性研究需求分析总体设计详细设计编码测试编码: 编辑源程序.c编译t (目标程序,二进制代码.obj) f连接t (可执行程序.exe) f测试运行3、程序设计语言符号化机器语言(二进制代码)汇编(符号语言)咼级语言(C C+ C# JAVA)4、程序设计方法(思想)面向过程的结构化程序设计方法 :“自顶向下,逐步求精”三种基本结构:顺序选择循环程序=算法+数据结构算法特征:确

2、定性有穷性一个或多个输出零个或多个输入有效性面向对象的程序设计方法:对象属性方法类5、常用算法累加 累乘 求最大值或最小值 求两数的最小公倍数或最大公约数(辗转相 除法)交换两个数查找第二章C语言概述1、程序基本单位:函数2、标识符:变量名、函数名、标号只能由字母(大小写敏感) 、数字、下划线组成,且第一个字符只能为字母 或下划线第三章 数据类型及表达式1、标示符:字母、数字或下划线组成,对大小写敏感,且第一个字母只能为字 母或下划线,不能使用关键字作为标示符。32 个关键字: Auto break case char const continue default do double else

3、 enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while2、数据类型: char int float double字节: 1 2 4 8整型数据: 八进制:由数字 0开头 十六进制:由数字 0和字母 x 开头 int short :2 long :4浮点型数据: 十进制小数形式:必须包含小数点和数字 如 .314,0.指数形式:e(或E)前必须有数字,e之后的指数必须为整数如

4、 1E-3 0E0float (4B,有效位 67) double (8B,有效位 1516) 默认为 double类型字符型数据:字符常量用单引号括起来表示转义字符:n换行b退格t水平制表,即横向跳格'单引号 ddd 1-3位八进制数代表的字符xhh 1-2位十六进制数代表的字符f 换页 r 回车 v 垂直制表 ”双引号 0 空 ,表示字符串常量的结束字符也可用反斜线加八或十六进制 ASCII 码表示,如 101'同 A'字符串常量双引号3、/:除法运算,如5/3,整数相除为整数,小数部分舍去%求余 只能用于整数相除求余,结果符号和被除数相同-5%3 /-24、强制类

5、型转换(类型名)(表达式)女口: a=(double)10第四章语句及程序流程控制1、结构化程序设计三种基本结构:顺序、选择、循环2、 基本输入输出函数:putchar getchar printf seanf字符输出函数putchar(c); /c为字符型或整型的常量或变量,只能一个字符输入函数getchar(); 括号内不能有内容,输入的字符不能带单引号格式格式输出函数printf(格式控制,输出表);/格式控制为用双引号括起来的格式控制转换字符串,有三种形式说明:由“ ”后跟格式字符组成格式字符说明常用形 式d带符号十卜进制输出整数%卜0m1do无符号八进制整数(不输出前导符0)%ox无

6、符号十卜八进制整数(不输出前导付 0x)%xu无符号十卜进制r%u:c字符形式输出一个字符%mcs输出字符串%-m .nsf以小数点形式输出单、双精度实数,隐含输出6位小数%-0 m. n fe标准指数形式输出单、双精度实数,数字部分为 6位小数%-m.neg选f或e中宽度较小的输出实数,不输出无意义 0%g附加格式说明字符说明左对齐0 (数字)输出空位用0填充m (个正整数)输出数据字段宽度,if头际位数大于m,按头际;小于m,补0或空格.n( 个正整数)实数,表示输出n位小数;字符串,表示截取字符个数l(字母)输出长整形整数如果想输出字符“ ”,应在“格式控制中”用连续两个“ ”表示 格式

7、输入函数seanf(格式控制,地址表)格式控制同printf,地址表由地址组成,&为取地址运算符格式字符不用u,附加格式说明字符常用形式*ml格式字符*表示本输入项在输入后不赋给相应的变量,即跳过它对应的数据3、条件表达式表达式 1 ? 表达式 2: 表达式 34、多分支选择语句switch(表达式)case常量表达式1:语句1;case 常量表达式 n: 语句 n; default:语句 n+1;break加在必要的case分支语句后,可跳出switch结构;用在循环体中,可立即终止所在循环多case执行相同语句,前面相同语句可省,不加分号,但不能合写为一行5、循环结构:while

8、do.while forbreak;/只能用于switch和循环语句,对于多重循环,只能退出包含该语句的那一层结构continue; /终止本次执行,继续下一次循环第五章 数组1、C 语言的数据类型分为基本数据类型 (字符型、整型、实型)、构造数据类型 (数组类型、结构体类型、公用体类型) 、指针类型和空类型。2、一维数组类型名 数组名 数组长度 存放字符串的字符数组可简写,如 char str6=”hello” 注意:字符串结束标志 0'也是一个元素例:int a10; /a+i 就表示 ai的地址 &ai3、二维数组中 aij 地址的表示:&aij ai+j &am

9、p;a00+4*i+ja0+4*i+j/设一行中有 4 个元素4、字符数组初始化时,如果初始化表达式少于数组宽度,剩余位自动置为空字 符,即是字符串的结束标志。5、字符串的输入输出printf scanf gets puts getchar putchargets 和 puts 只有一个参数,就是一个内存地址6、标准字符串处理函数#include <string.h>(1) strlen(s)统计字符串s中字符的个数(不含终止符0',返回字符串s的 长度(2) strcpy(s1,s2)把字符串s2中的内容拷贝到字符串si中去,返回sistrncpy(s1,s2,n)把s2

10、中前n个字符拷贝到si中,返回si注:不会自动 拷入字符串结束标志,需手动给 si 放置字符串结束标志(3)strcat(si,s2) 把 s2 的内容连接到 si 后, si 成为一个新串,返回 sistrncat(s1,s2)把s2中前n个字符内容连接到si后,返回si,如果n超过s2 实际长度,以实际长度为准(4) strcmp(s1,s2)比较si和s2的大小,返回:s1>s2,返回正数;s1=s2,返回 0; s1<s2,返回负数。注:大小值比较对应字符的ASCII码值strncmp(si,s2,n)(5) mencmp(s1,s2,n)比较si和s2前n个字节,返回:s

11、1>s2,返回正数;s1=s2, 返回0; si<s2,返回负数。注:如果两字符串相同且 n 大于字符串长度, memcmp 会继续比较字符串结 束标志后面的内存单元,直到不相等或达到次数 n;而strcmp只要比到字符串 结束标志就会结束。(6) memcpy(si,s2,n)将s2中前n个字符拷贝到si中,返回si menmove(si,s2,n)将s2中前n个字符拷贝到si中,返回si区别如: char s=”hello,world ”;memmove(s+2,s,i0); /结果为“ hehello,worl” 考虑内存区域重叠问题 memcpy(s+2,s,i0); /

12、结果为“ heheheheheh”e si2='0'(7) Memset(s,c,n)把字符串s中前n个字节内容设置为c(8) strlwr(s)把字符串s中大写字母转换为小写字母 strupr(s)把字符串s中小写字母转换为大写字母补充:sizeof(s)求数组s占用的空间字节数 第六章 函数i、定义函数的变量注意:形参变量名不能重复,每个变量名必须单独定义;函 数内定义的变量名不能与形参列表变量名重名;函数体内变量定义语句必须写 在函数体开头部分函数类型一般默认为int型2、形参:定义函数时实参:调用函数时实参形参主调函数被调函数返回值Retur n语句:函数终止执行,并且

13、返回到调用此函数的语句3、局部变量:在函数内定义的变量,其作用范围局限于此函数内部全局变量:定义在任何函数之外的变量,作用范围是从定义处直到文件末尾 同名时,局部变量优先使用4、C语言的变量有4种存储类别:auto(自动变量)只能在函数中定义,只有局部变量能定义static(静态变量)从被分配存储空开始,直到程序结束才被释放,局部和全 局变量都可定义女口: static int c=3;register(寄存器变量)只允许局部变量和少量形参定义;地址不可访问;类 型必须为int、char、和指针型。频繁使用的变量放在寄存器中可以提高程序的 执行效率extern(外部变量) 只能用于全局变量的声

14、明。在全局变量定义处之前访问 该变量,可用extern声明,扩展全局变量的作用域。注:在多文件中使用外部 变量时,要考虑该变量的值可能在其他文件中被修改5、内部函数:一个函数只能在本文件中可见而不能被其他文件调用static类型标识符函数名(形参表)外部函数:可以被其他文件调用,extern可省。在需要调用外部函数的文件 中,必须先使用extern关键字声明外部函数的原型 第七章预处理命令1、编译预处理命令:放在函数之外,以“ #”开头并且末尾不加分号的命令 预处理:指在编译前所做的处理,由预处理程序负责完成C提供多种预处理功能:如宏定义(#define)、文件包含倂include)、条件编

15、译2、“宏”:用一个标识符来表示一个字符串。被定义为“宏”的标识符称为“宏 名” “宏代换”或“宏展开” :编译预处理时,所有宏名用字符串去代换, 分为有参和无参两种3、#undef M /终止宏 M 的作用域宏定义不占用运行时间,只占用编译时间,而函数则占用运行时间4、条件编译( 3 种)#ifdef 标识符#ifndef 标识符#ifdef 常量表达式程序段 1程序段 1程序段 1#else#else#else程序段 2程序段 2程序段 2#endif#endif#endif第八章 指针1、存储器中的一个字节称为一个内存单元,内存单元的编号称为地址,通常把 这个地址称为指针。存放地址的变量

16、称为指针变量,一个指针变量的值就是某 个内存单元的地址(指针) 。指针:一个变量的地址 指针变量:专门存放变量地址的变量2、 指针变量定义类型说明符 *变量名 /* 表示这是一个指针变量,类型 说明符表示该指针变量所指向的变量的数据类型。3、指针变量的赋值只能赋予地址。& :地址运算符* :指针运算符(或“间接访问运算符” ),表示指针变量所指的变量,其 后必须跟指针变量。 注:在指针变量说明中, * 是类型说明符,表示其后的变 量是指针类型;而表达式中出现的 *则是一个运算符, 表示指针变量所指的变量。4、动态存储分配的几个相关函数malloc(size)在内存的动态存储区中分配一个

17、长度为 size的连续存储空间,返 回值是指针 (指向字符 ),值是该分配区域的起始地址。 如果此函数未能成功执行, 则返回 0。calloc(n,size) 分配n个长度为size的连续空间,返回分配域的起始地址(指 向字符)。free(ptr) 释放由 ptr 指针变量(指向字符型的指针变量)指向的内存区域。5、移动指针:指针变量加或减一个整数,功能:使指针变量指向相邻的存储单 元指针比较:两个指针指向同一个对象,可以进行 <,<=,>,>=,=,!= 等关系运算。6、字符串常量是在内存中一段连续空间存放,字符串中每个字符占一个字节存 放空间。7、指针可以指向一个函

18、数,一个函数在编译时被分配一个入口地址,这个地址 就称为函数的指针。指向函数的指针定义: 类型说明符( *指针变量名) (函数形参);/函数形 参可省 如 char(*p)()返回指针的函数定义 类型名 *函数名(参数表) 如 char *m(a,b);8、指针数组:若干指向同类对象的指针构成的数组类型名*数组名数组长度女如: float *p10指向指针的指针:指针变量指向指针变量,其内容为某指针变量的地址类型说明符 * 指针变量名第九章结构体、公用体和枚举类型1、结构体(struct)把不同类型的数据组织在一起并构造成一种新的数据类型共用体(union)又称联合体,使几种不同类型的变量公用

19、一段存储空间枚举(enum)列举变量的取值范围,用此类型定义的变量只能取已列举的值2、结构体类型定义struct结构体名/结构体名可省类型名结构体成员名1;类型名结构体成员名n;从关键字至右花括号之间的部分称为结构区分符,它是类型区分符的一种,用于指定结构的类型结构体类型变量的定义单独定义struct stude ntchar sn 10; 学号int age;;struct stude nt std1,std2;混合定义struct stude ntchar sn 10;int age;std1,std2 ;struct stude nt std1,std2;使用typrdef定义 type

20、def struct char sn 10;int age;STUDENT;STUDENT std1,std2;引用结构体成员:结构体变量名.结构体成员名 结构体可嵌套使用 结构体数组:将结构体变量名换为数组即可 结构指针:指向结构体类型的指针。应用:通过一种特殊的结构指针(自引用 结构)来表示链表、堆栈、树、图等复杂数据结构;用于动态分配结构对象。结构体类型名*指针变量名访问结构体成员:用间接运算符*访问结构成员女口: struct student stu,*p二&stu;(*p).sex二'm'/ *”的运算优先级低于“.”用指向运算符“一 >”访问/和 &g

21、t;间不能有空格如: p>sex='m / “一>”与“()” “” “.”具有最高优先级注: struct char *s;x,*p二& x;*p >s+ /在引用了变量x中指针成员s所指存储单元字符之后,使指针 s 自加1(*p >s)+ /使变量x中指针成员s所指存储单元的字符值加13、链表Struct linkint data;Struct link *n ext;a,b;如果执行a.next二&b;则构成链式结构datan extdatan extab多个同类型的结构变量“链接”到一起,形成“链表”输出链表:访问链表,只有通过链表首地址

22、,依次访问各结点插入操作:确定插入位置,通过指针的再次赋值。女口: b >next=a >next;a>next=b;删除操作:将待删结点的前驱结点指向待删结点的后继结点即可a>next=b>next;4、共用体5、枚举类型 如果一个变量的值只有有限几种可能情况。 “枚举”:指定义一组 已命名变量,枚举变量的值只限于列举出来的这组常量的范围内。三种定义方式说明与定义分开enum weekdaysun,mon,tue,wed,thu,fri,sat;enum weekday day;说明与定义合一enum weekdaysun,mon,tue,wed,thu,fri,satday;无名枚举enum sun,mon,tue,wed,thu,fri,satday;枚举

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论