C语言复习ppt课件.ppt
《C语言复习ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言复习ppt课件.ppt(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一讲 C语言复习C+C+语言程序设计语言程序设计杨万扣杨万扣导航与控制研究所导航与控制研究所东南大学自动化学院东南大学自动化学院1.1.考试说明考试说明2.2.推荐教材推荐教材3.C3.C语言简述语言简述4.VC4.VC编译器编译器5.C5.C程序事例程序事例6.6.注意事项注意事项提纲提纲考试说明考试说明l考核方式考核方式平时过程化考核平时过程化考核40%,一般,一般5个个个人项目个人项目项目项目(团队项目团队项目)30%,通常为,通常为1个个团队项团队项目目期末考试期末考试30%通常为通常为5题题上机题目。前上机题目。前5题选题选4题,注题,注重基本算法和基础能力;最后重基本算法和基础能
2、力;最后2题选题选1题,题,注重考查学生的综合运用能力,多方案注重考查学生的综合运用能力,多方案选择能力。选择能力。推荐教材推荐教材新标准新标准C+程序设计教程程序设计教程C+编程思想编程思想,C+Primer 深度探索深度探索C+对象模型对象模型Effective C+,More effective C+编程规范文档编程规范文档(高质量高质量C+编程编程)数据结构数据结构+算法设计算法设计典型案例典型案例 大数据与机器学习大数据与机器学习C是面向过程的语言它真正提供的只有宏、指针、结构、数组和函数结构化语言重点在于算法和数据结构 首要考虑,是如何通过一个过程,对输入(或环境条件)进行运算处理
3、得到输出 (或实现过程(事务)控制)C C语言概述语言概述C C提供了大量的库函数:提供了大量的库函数:输入输出函数:输入输出函数:printf(),scanf(),printf(),scanf(),动态内存分配函数:动态内存分配函数:malloc(),free(),malloc(),free(),内存管理:内存管理:memset(),memcpy(),memset(),memcpy(),.C C语言概述语言概述C语言知识巩固和补充语言知识巩固和补充l输入输出输入输出l位运算位运算l函数函数l指针和动态内存分配指针和动态内存分配l命令行参数命令行参数lC C语言标准库函数语言标准库函数VCVC
4、编译器编译器VC 6.0VS2010VS2015VS2015使用的是新C标准 C11,#include int main()int i;printf(Hello!n);return 0;C语言程序,由函数和变量组成函数包含一些语句,指定要执行的计算操作变量存储计算过程中使用的值1.编译2.链接3.生成可执行文件.exe C C语言概述语言概述-例子例子1.main 函数,通常函数的命名没有限制,但函数,通常函数的命名没有限制,但main是一个特殊的函数名是一个特殊的函数名-每个程序都从每个程序都从main函数开始执函数开始执行,即每个程序都必须有且仅有一个行,即每个程序都必须有且仅有一个mai
5、n函数函数2.#include 用于告诉编译器在本程序用于告诉编译器在本程序中包含标准输入中包含标准输入输出库的信息输出库的信息#include void main()float len,pi;float lower,upper,step,cur;pi=3.1415;lower=1.0;upper=5.0;step=1.0;cur=lower;while(lower=upper)len=2*pi*cur;printf(“r=%3.0f,len=%6.0fn”,cur,len);cur=cur+step;whilewhile控制语句控制语句常量定义改成宏定义常量定义改成宏定义C C语言例子语言例
6、子#include#define PI 3.1415void main()float len;float lower,upper,step,cur;lower=1.0;upper=5.0;step=1.0;cur=lower;while(lower=upper)len=2*PI*cur;printf(“r=%3.0f,len=%6.0fn”,cur,len);lower=lower+step;C C预处理器预处理器三个常用的预处理器指令是三个常用的预处理器指令是:(1)#include#include#include“文件名文件名”这两种形式查找路径方法不一样这两种形式查找路径方法不一样(2)
7、#define#define 名字名字 替换文本替换文本(3)条件包含条件包含#if#endif(1)不带参数不带参数#define forever for(;)/*无无限循环限循环*/(2)不不带参数的宏定义通常用于为程序中的常量取一带参数的宏定义通常用于为程序中的常量取一个名字,称为符号常量。格式:个名字,称为符号常量。格式:#define 标识符标识符 替换文本替换文本 如如:#define PI 3.14159C C预处理器预处理器-宏定义宏定义含义清楚,提高了程序的可读性。含义清楚,提高了程序的可读性。在需要改变一个常量时能做到在需要改变一个常量时能做到“一改全改一改全改”用用def
8、ine定义宏是定义宏是C语言的习惯语言的习惯,在,在C+中有更好的中有更好的解决方案解决方案.用用#define定义符号常量的定义符号常量的问题问题 所定义的符号常量所定义的符号常量无法无法进行进行类型检查类型检查#define的处理只是简单的字符串的替换,可能会的处理只是简单的字符串的替换,可能会引起一些意想不到的错误引起一些意想不到的错误C+建议用建议用const定义符号常量定义符号常量const =;如:如:const double PI=3.1415926;C C预处理器预处理器-宏定义宏定义(3)带参数带参数#define max(A,B)(A)(B)?(A):(B)使用宏使用宏ma
9、x 看起来象函数调用,但宏调用看起来象函数调用,但宏调用直接直接将文将文本本替换替换文本插入到代码中文本插入到代码中但也存在但也存在问题问题:max(i+,j+);/*错错*/好处好处是:避免函数调用的开销是:避免函数调用的开销#undef 指令取消名字的宏定义,可以避免后续的指令取消名字的宏定义,可以避免后续的宏调用宏调用C C预处理器预处理器-条件包含条件包含(1)使用条件语句对预处理本身进行控制,这种条件语使用条件语句对预处理本身进行控制,这种条件语句的值是在预处理的执行过程中进行计算句的值是在预处理的执行过程中进行计算(2)利利用计算得到的条件值选择性地包含不同的代码用计算得到的条件值
10、选择性地包含不同的代码#if SYSTEM=SYSV#define HDR“sysv.h”#elif SYSTEM=BSD#define HDR“bsd.h”#else#define HDR“default.h”#endif#include HDR#ifndef HDR#define HDR#endif一般预编译器常一般预编译器常量都是大写量都是大写#include using namespace std;#define DEBUGvoid main()#ifdef DEBUG couta;#ifdef DEBUG coutinput int:aendl;#endif (1)如果如果没有定义没
11、有定义DEBUG宏宏实际被编译的程序代码如下:实际被编译的程序代码如下:#include using namespace std;void main()int a;cina;(2)如果如果定义定义DEBUG宏宏实际被编译的程序代码如下:实际被编译的程序代码如下:#include using namespace std;#define DEBUGvoid main()couta;coutinput int:aendl;(1)编编译译C+程序时,编译器自定义了一个预处理器程序时,编译器自定义了一个预处理器名字名字,_cplusplus#ifdef _cplusplus .#endif(2)编编译译
12、C程序时,编译器自定义名字程序时,编译器自定义名字_STDC_(3)_cplusplus 和和 _STDC_ 不会同时定义不会同时定义#include using namespace std;void main()#ifdef _cplusplus couta;#ifdef _cplusplus coutinput int:aendl;#endif 注释注释有两种方式有两种方式(1)/*我爱我家我爱我家*/(2)/我爱我家我爱我家 (C风格风格)(3)注释是写给人看的,而不是写给计算机的注释是写给人看的,而不是写给计算机的。注释注释 可以概括程序算法,标识变量意义,讲解难懂的代可以概括程序算法
13、,标识变量意义,讲解难懂的代码。码。添加注释是一种好的编程习惯添加注释是一种好的编程习惯注释注释 不会增加程序的可执行代码的长度。不会增加程序的可执行代码的长度。在代码生成以前,编译器会将注释从程序中剔除掉在代码生成以前,编译器会将注释从程序中剔除掉输入输入/输出输出(1)C语言输入输出函数:语言输入输出函数:printf(),scanf(),(2)必须包含相关的系统头文件必须包含相关的系统头文件(3)C+采用的是采用的是 cin,cout(4)必须包含相关的系统头文件必须包含相关的系统头文件(5)C语言文本输入输出函数:语言文本输入输出函数:fprintf(),fscanf(),(6)C+文
14、本输入输出,文本输入输出,ofstream outfile(“name-of-file”);ifstream infile(“name-of-file”);需要包含头文件需要包含头文件#include变量变量n变量变量:为我们提供了一个有名字的为我们提供了一个有名字的内存存储内存存储区区,可以通过程序对其进行读、写和处理。,可以通过程序对其进行读、写和处理。C+中每个符号都与一个特定的中每个符号都与一个特定的数据类型数据类型相关联,这个相关联,这个类型类型决定了相关内存的决定了相关内存的大小大小、布局布局、能够存储在该内存中的值得范围以、能够存储在该内存中的值得范围以及可以应用其上的操作集。及
15、可以应用其上的操作集。数据值数据值:(对象的右值,被读取的值对象的右值,被读取的值)地址地址:(在内存中的地址,又称为左值在内存中的地址,又称为左值)C C语言的输入输出语句(教材语言的输入输出语句(教材P282P282)#include#include scanf()scanf()将输入读入变量将输入读入变量 printf()printf()将变量内容输出将变量内容输出scanf()scanf()语句(函数语句(函数)int scanf(const char*,.);int scanf(const char*,.);参数可变的函数参数可变的函数第一个参数第一个参数是格式字符串,是格式字符串,
16、后面的参数后面的参数是变量的地址,是变量的地址,函数作用是按照第一个参数指定的格式,将数据读入函数作用是按照第一个参数指定的格式,将数据读入后面的变量后面的变量参数可变的函数的参考阅读参数可变的函数的参考阅读(不要求掌握)不要求掌握)scanf 返回值返回值 0 成功读入的数据项个数;成功读入的数据项个数;0 没有项被赋值;没有项被赋值;EOF 第一个尝试输入的字符是第一个尝试输入的字符是EOF(结束结束)(对某些题,返回值为(对某些题,返回值为EOF可以用来判断输入可以用来判断输入数据已经全部读完)数据已经全部读完)printf()printf()语句(函数语句(函数)int printf(
17、const char*,.);int printf(const char*,.);参数可变的函数参数可变的函数第一个参数第一个参数是格式字符串,是格式字符串,后面的参数后面的参数是待输出的变是待输出的变量,函数作用是按照第一个参数指定的格式,将后面量,函数作用是按照第一个参数指定的格式,将后面的变量在屏幕上输出的变量在屏幕上输出 返回值返回值:成功打印的成功打印的字符数字符数;返回返回负负值为值为出错出错%d d 读入或输出读入或输出intint变量变量%c c 读入或输出读入或输出charchar变量变量%f f 读入或输出读入或输出floatfloat变量变量%s s 读入或输出读入或输出
18、char*char*变量变量%lflf 读入或输出读入或输出double double 变量变量%e e 以科学计数法格式输出数值以科学计数法格式输出数值%x x 以十六进制读入或输出以十六进制读入或输出 int int 变量变量%I64dI64d 读入或输出读入或输出 _int64 _int64 变量变量(64(64位整数)位整数)%p p 输出指针地址值输出指针地址值%.5lf.5lf 输出浮点数,精确到小数点后输出浮点数,精确到小数点后5 5位位格式字符串里的格式控制符号:#include#include int main()int main()int a;int a;char b;ch
19、ar b;char c20;char c20;double d=0;double d=0;float e=0;float e=0;int n=int n=scanfscanf(%d%c%s%lf%f,&a,&b,c,&d,&e);(%d%c%s%lf%f,&a,&b,c,&d,&e);printfprintf(%d%c%s%lf%e%f%d,a,b,c,d,e,e,n);(%d%c%s%lf%e%f%d,a,b,c,d,e,e,n);return 0;return 0;int n=scanf(%d%c%s%lf%f,&a,&b,c,&d,&e);printf(%d%c%s%lf%e%f%d,a
20、,b,c,d,e,e,n);input:123a teststring 8.9 9.2output:123 a teststring 8.900000 9.200000e+000 9.200000 5input:123ateststring 8.9 9.2output:input:123 a teststring 8.9 9.2output:123 a teststring 8.900000 9.200000e+000 9.200000 5123 a 0.000000 0.000000e+000 0.000000 3#include int main()int a,b;char c;char
21、s20;long long n=9876543210001111LL;scanf(%d%c,%s%x%I64d,&a,&c,s,&b,&n);printf(%d%x%u%s%p%x%d%I64d,a,a,a,s,s,b,b,n);return 0;input:output:#include#include int main()int main()char*s;char*s;scanf(%s,s);scanf(%s,s);return 0;return 0;错在何处?错在何处?常见错误:错在错在 s s 不知道指向何处,往其指向的地方写入数据,不知道指向何处,往其指向的地方写入数据,不安全不安全
22、char*gets(char*s);char*gets(char*s);从标准输入读取一行到字符串从标准输入读取一行到字符串s s如果如果成功成功,返回值就是,返回值就是 s s 地址地址如果如果失败失败,返回值是,返回值是 NULLNULL可以根据返回值是可以根据返回值是 NULLNULL判定输入数据已经读完判定输入数据已经读完调用时要确保调用时要确保 s s 指向的缓冲区足够大,否则可能发生指向的缓冲区足够大,否则可能发生内存访问错误内存访问错误读取一行:C+11标准剔除了gets,替换的是gets_s()#include#include int main()int main()char
23、s200;char s200;char*p =char*p =getsgets(s);/gets_s(s,200);(s);/gets_s(s,200);printf(%s:%s,s,p);printf(%s:%s,s,p);return 0;return 0;input:input:Welcome to Beijing!Welcome to Beijing!读取一行:output:output:Welcome to Beijing!:Welcome to Beijing!Welcome to Beijing!:Welcome to Beijing!int sscanf(const char*
24、buffer,const char*int sscanf(const char*buffer,const char*format,address,.);format,address,.);和和scanfscanf的区别在于,它是从的区别在于,它是从bufferbuffer里读取数据里读取数据int sprintf(char*buffer,const char*format,int sprintf(char*buffer,const char*format,argument,.);argument,.);和和printfprintf的区别在于,它是往的区别在于,它是往bufferbuffer里输
25、出数据里输出数据sscanf 函数和 sprintf函数#include int main()int a,b;char c;char s20;char szDest200;_int64 n=9876543210001111;sscanf(szSrc,%d%c,%s%x%I64d,&a,&c,s,&b,&n);sprintf(szDest,%d%x%u%s%p%x%d%I64d,a,a,a,s,s,b,b,n);printf(%s,szDest);return 0;output:位运算(教材P28)有时我们需要对某个整数类型变量中的有时我们需要对某个整数类型变量中的某一位某一位(bitbit)进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习 ppt 课件
限制150内