C语言-C语言概述.ppt_第1页
C语言-C语言概述.ppt_第2页
C语言-C语言概述.ppt_第3页
C语言-C语言概述.ppt_第4页
C语言-C语言概述.ppt_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

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

文档简介

C语言概述 第一章 目标 回顾编程语言C语言的发展与特点C语言程序的结构和语法规则C程序编译和开发过程 编程语言 用于编写软件的编程语言机器语言 用二进制代码 0和1 组成的 用不同的二进制代码组合表示机器的不同指令 汇编语言高级语言 BASICFORTRANPASCALCJAVA 第四代语言 4GL 如 UNIXShell 机器语言 用二进制代码 0和1 组成的 用不同的二进制代码组合表示机器的不同指令 机器语言中的每一条指令 代表了机器可执行的一个基本操作 指令由操作码和地址码两部分组成 机器语言的特点是面向机器 程序编写难度大 调试修改繁琐 兼容性差 但机器语言执行速度最快 汇编语言 用一些特定的符号代替机器语言的二进制数代码 这些符号也称为助记符 通过汇编程序翻译成机器语言翻译成机器语言的目标程序 该过程称为汇编过程 汇编语言比机器语言易读 易改 执行速度与机器语言相仿 比高级语言快得多 适用于实时控制和实时处理 高级语言 高级语言是接近人们的自然语言和数学语言 以及面向问题的程序设计语言 它容易学习和掌握 并且通用性强源程序 转换成相应的机器语言目标程序有两种方式 编译方式 解释方式与前面的语言有明显区别的是 并不涉及计算机如何执行任务 而只指定它必须做什么 面向对象与面向过程的语言 面向过程的语言 如 c语言 基于对某些具体事件的处理 应用函数实现具体的功能 面向对象的语言 如 c java等 基于对一类问题的处理 以类为模板创建对象来实现具体的功能 进入C语言时代 1969 1973年间 贝尔实验室的DennisRichey和DavidKerningham开发了C语言 C语言易于人们的阅读和理解 由于此语言具有快速和简洁的特点 因此在系统程序员和商业软件制造商之间非常流行 C语言的发展 ALGOLBC C语言的应用领域 C语言最初用于系统程序设计系统程序是计算机操作系统或操作系统支持的实用程序的组成部分操作系统 解释器 编辑器以及汇编器通常称为系统程序UNIX操作系统是用C语言开发的有许多种C编译器 可以满足几乎所有类型PC的需要 C语言的主要特点 模块化的程序设计语言 用具体的函数来实现面向过程 流程式设计 其它特点参见课本P2 流程式设计 一个关于理发的例子 进入理发室 是否有空位子 坐下等候 是否轮到自己 洗头 坐到理发椅上 开始理发 吹干 是否满意 付钱 离开理发店流程图 中级语言 高级语言 汇编语言 C C语言的结构和语法规则 函数类型 函数名 函数参数列表 数据定义和声明 可执行语句序列 C语言的结构和语法规则 C语言的示例 Welcome cpp voidmain printf 欢迎到华育国际来 n C语言的结构和语法规则 每个C程序都必须有一个main函数 函数体要由一对 括起来 每条语句后都要有 一个C程序总是从main函数开始执行的 C程序的输入输出操作是由库函数scanf和printf完成的 注释符有两种 和 C程序编译和开发过程 用C语言编写的程序称为C源程序经编译以后的C语言源程序称为目标程序将目标程序与函数库进行连接 生成最终的可执行程序称为可执行程序 源程序 目标程序 可执行程序 C函数库 编译 连接 变量和类型 第二章 目标 讨论变量命名区分变量和常量列出C语言程序中的各种数据类型并使用它们讨论各种运算符及其优先级 关键字 在一个特定语言的上下文中有特殊意义的单词所有的数据类型都是保留的关键字在指定变量名的同时还要指定将要存储在其中的数据类型 变量声明 关键字 常用的关键字 breakcasecharcontinuedefaultdodoubleelsefloatforgotoifintlongreturnsizeofstaticstructswitchvoidwhile C语言的数据类型 C语言的数据类型 构造类型 指针类型 基本类型 空类型 void 数组类型 枚举型 enum 字符型 char 实类型 整型 int 结构体类型 strcut 共用体类型 union 双精度型 double 单精度型 float 基本数据类型 char double 基本数据类型 float int 单个或多个数字系列 存储含有小数位 超出float类型大小的值 存放一个字符 int类型 存储数字数据声明方式 intnum 不能存储类似于 Alan 或 abc 等任何其他类型的数据分配32位 4个字节 的内存空间 整数的范围是从 32768到32767示例 12322 0 232 float类型 存储整数或包含小数位的值声明方式 floatnum 分配32位 4个字节 的内存空间示例 23 05 56 5 32 double类型 存储超出float类型大小的限制的值声明方式 doublenum 分配64位 8个字节 的内存空间示例 23 34232324 char类型 存储一个字符信息声明方式 chargender gender M 分配8位 1个字节 的内存空间示例 a m 1 5 void类型 告诉编译器没有任何类型的值声名方式 voidnum不返回任何值 派生数据类型 int short shortint 派生数据类型 基本数据类型 数据类型修饰符 int unsignedint unsigned int double Longintlongdouble long 通过修改四种基本数据类型以适应不同的情况而产生的数据类型叫做派生数据类型 只允许正数 比int占更少的空间 比int double占更多的内存空间 signed和unsigned类型 signed最重要的是修改char数据类型unsigned类型指定变量只能接受正值unsignedintvarNum varNum 23123 加上unsigned前缀 正数的取值范围是原来的两倍修饰符可以与int和float数据类型一起使用unsignedint支持的范围是从0到65535 long和short类型 要求某个整数的长度比正常长度更长或更短时 使用long和shortshortint占8位 1个字节 的内存空间允许的数字范围是从 128到127longint占32位 4个字节 的内存空间2 147 483 648到2 147 483 647longdouble占128位 16个字节 的内存空间 数据类型及其范围2 1 数据类型及其范围 常量 常量就是一个保持不变的值示例5数字 整型常量5 3数字 浮点常量 Black 字符串常量 C 字符常量 常量 其值不能改变整型常量 可以用十进制 八进制或十六进制来表示 实型常量符号常量字符型常量 整型常量 可以用十进制 八进制或十六进制来表示十进制 0 9 无前缀 无小数部分八进制 0 7 前缀为0 无小数部分十六进制 0 F 前缀为0 x 无小数部分整型中的长整型可用L作为后缀 无符号的可用U做后缀 实型常量 实型常量是由整数部分和小数部分组成的 它只有十进制的两种表示方法 定点数形式指数形式 科学表示法 1 234e3 1 234x103实型常量的后缀用F表示单精度型 用L表示双精度型 符号常量 定义一个符号来代表一个常量 符号常量用预编译处理命令 define来定义符号常量如 definePI3 1415926 defineNAME 王明 字符型常量 字符型常量包含字符常量和字符串常量字符常量 用一对单引号括起来的一个字符 如 a Q 3 等转义字符常量 p18字符串常量 用一对 括起来的0个或多个字符的序列 如 Iamagirl 注意 每个字符串后面都有一个 0 作为结束标志 要占用一个字符的空间 声明示例 main charabc 声明abc intxyz 声明xyz floatlength 声明length doublearea 声明area longliteyrs 声明liteyrs shortarm 声明arm 数据的溢出 超过数据类型所定义的范围就会出现数据溢出 main inta b a 32767 b a 1 printf d d a b 输出 32767 32768 变量 数据15 内存 应用程序要为每一项数据分配内存需要多少内存数据被存储在哪个 通过变量 可以为内存中的位置提供一个有意义的名称 变量 其值可以改变的量一个变量应该有一个名字 在内存中占据一定的存储空间 变量的两个要素 变量名 符号地址 在对程序编译连接时由系统为每一个变量名分配一个内存地址 在程序中从变两种取值 实际上是通过变量名找到相应的内存地址 从其存储单元中读取数据 命名规则变量值 不同类型的变量占用的内存单元数不同 变量的定义与初始化 定义格式 数据类型变量名1 变量名2 如 inta b 初始化 数据类型变量名1 初值1 变量2 初值2 如 doublem 2 332 表达式 运算符和操作数的有效组合在程序执行的过程中 变量的实际值和表达式中出现的常量一起使用 赋值运算符 可以用在任何有效的C表达式中通用的形式 变量名 表达式将同一个值赋给多个变量的操作叫做多重赋值 但是 不能像下面的语句中那样赋值 a b c 10 inta intb intc 10 常用的运算符 分4类 算术 关系 逻辑 位 一元 二元运算符都是算术运算符 用于对包含关系运算符的表达式进行合并或取非 测试两个变量或一个变量和一个常量之间的关系 将数字按位进行计算 算术表达式 在C中 可以用算术运算符 数字和字符操作数来表示数学表达式 示例 i 75 c 3 8 a b c d 22 关系运算符和逻辑运算符 用于测试两个变量或一个变量和一个常量之间的关系 逻辑运算符 逻辑运算符用于对包含关系运算符的表达式进行合并或取非 使用逻辑运算符的表达式 返回0表示假 返回1表示真 示例 if a 10 a 20 位运算符 将数字转换成等价的二进制形式后再处理数据 按位表示法 位运算符 位运算符将数字视为二进制值 并按位进行相应运算 运算完成后再重新转换为数字 其他运算符 条件运算符 逗号运算符指针运算符强制类型转换运算符 算术运算符 计算一个整数除法的余数 幂运算符的示例 9 29是底数 2是指数结果是9 9 81 和 运算符前置和后置有很大区别 运算符优先级 优先级建立了计算算术表达式时 一组运算符相对于另一组的层次关系优先级指C计算运算符的顺序可通过将表达式括在括号中来改变运算符的优先级 运算符优先级 当一个表达式中的运算符具有相同优先级时 结合律还指出C语言计算这些运算符的顺序 示例 8 4 2 3 计算顺序如下 比较运算符之间的优先级 不存在相对于其他算术运算符有较高的优先级始终按从左向右顺序进行计算 修改优先级 括号 的优先级最高 使用括号 可修改运算符的优先级 用括号括起来的优先级较低的运算符具有最高的优先级 最先执行 在括号嵌套 的情况下 最里层的最先执行 包含多个括号的表达式从左向右进行计算 修改优先级 考虑下面的示例 5 9 3 2 4 10AND 2 2 4 8 4 6OR 211 计算如下 修改优先级 修改优先级 类型转换 运算符的操作数属于不同的数据类型 运算时通常会将这些操作数转换为同一类型 charch inti floatf doubled result ch i f d f i intdoublefloatdoubledouble 转换 通过使用转换可以将一个表达式强制转换成某一种类型 转换的通用语法是 type 表达式 type任意有效的C数据类型示例 经过赋值运算后 int f返回的整型值重新转换为浮点数 f本身的值不变 floatx f f 3 14159 x int f 条件运算符和条件表达式 格式表达式1 表达式2 表达式3 includevoidmain intn s scanf d 顺序结构程序设计 第三章 程序的三种基本控制结构 顺序结构 各部分顺序执行选择结构 分支结构 循环结构 直到循环 当循环 顺序执行语句 C语言的语句可以分为5类 控制语句表达式语句函数调用语句复合语句空语句 顺序执行语句 标准输入 输出 C语言中的标准库提供了输入和输出函数标准库提供 输入 输出函数来处理输入 输出 字符和字符串操作标准输入通常是指键盘标准输出通常是指显示器 也称控制台 可以用文件代替标准输入和输出设备 头文件 include这是一个预处理命令stdio h是一个文件 称为头文件包括对应于C语言程序中使用的输入 输出函数的宏所设计的printf scanf putchar getchar 等函数需要使用头文件中的这些宏才能正确执行 带格式的输入 输出 printf 用于带格式的输出scanf 用于带格式的输入能以用户控制下的各种预指定格式读入和输出数据格式说明符指定了变量值输入和输出的格式 printf printf 函数是格式化输出函数 一般用于向标准输出设备按规定格式输出信息 语法格式 printf 格式字符串及原样输出的语句 输出表项 printf 控制字符串由三类项目中的一项或多项组成 文本字符 由可打印字符组成格式命令 以 符号开始 随后紧跟与数据项相应的格式代码非打印字符 包括制表符 空格和换行 格式指示符 格式指示符的一般形式如下 修饰符 格式字符例如 我们要打印一个有符号的十进制整数 类型为int 则会使用格式字符 d对于无符号的十进制整数 类型为unsignedint 则使用 u对于浮点变量 类型为float 则使用 f 格式代码 上表中 c d f lf e g u s o和x都是类型说明符 控制字符串与格式代码 printf 示例 显示整数 浮点数和字符串的程序 includevoidmain inta 10 floatb 24 67892345 charch A printf Integerdata d n a printf FloatData f n b printf Character c n ch printf Thisprintsthestring n printf s Thisalsoprintsastring n printf 中的修饰符 修饰符数据项在范围内向左对齐 从范围最左侧的位置开始输出数据项字符宽度修饰符可以用于浮点型 双精度型和字符数组型 字符串 范围宽度修饰符是一个整数 定义了数据项的最大范围宽度 printf 中的修饰符 精度修饰符可以用在浮点型 双精度型或字符数组型 字符串 中 如果用在浮点型或双精度型数据中 数字字符串表示小数右侧最多可输出的数字位数 0 修饰符字段的默认填充符是空格 如果用户希望用零作为填充符 需要使用此修饰符 l 修饰符可以借助于此修饰符将整数显示为长整型或双精度型参数 相应的格式代码为 ld h 修饰符此修饰符用于显示短整数 相应的格式代码为 hd 修饰符示例 includevoidmain printf Thenumber555invariousforms n printf 没有修改 n printf d n 555 printf 用 修饰 n printf d n 555 printf 用宽度修饰符 n printf 10d n 555 printf 用0修饰符 n printf 0d n 555 printf 用0修饰符并规定宽度为10 n printf 010d n 555 printf 用左对齐 0修饰符并且规定宽度为10 n printf 010d n 555 printf 中的修饰符的使用的示例 scanf 用于接受数据的通用格式 printf 语句中的使用的格式极其语法同样适用与scanf 语句 格式字符串 包含三种类型的字符 1 格式指示符同printf 的用法大致相同 只是对于scanf 函数 格式指示符中的e E g G同f的作用相同 都是输入实数时用的2 空白字符 空格 跳格键 回车键 作为相邻两个输入数据的默认分隔符3 普通字符要求在输入时必须原样一起输入的内容 格式化输入 函数scanf 按指定的格式从键盘读取数据 并将其赋给一个或多个变量scanf 也使用格式化字符串来描述输入格式例如 inta scanf d 用于从键盘读取一个十进制整数 并将其赋给整型变量a 格式化输入 scanf 函数的一般格式scanf 格式字符串 输入项的地址列表 输入项的地址列表 是指一条scanf 语句可以输入多个值scanf d d f 输入多个变量时 可以用空格 制表符或换行符来标识每个变量的输入结束 只要值之间有空白字符 scanf 便能将每个值赋给相应的变量例如本题可以输入 10205 6也可以输入 10205 6还可以输入 10205 6 格式化输入 格式控制符宽度修饰符用来限定输入数据所占列数 include stdio h voidmain charb c scanf 3c 4c 格式化输入 格式控制符长度修饰符在输入长整型数据和双精度浮点数时 必须要使用长度修饰符 l 抑制修饰符抑制修饰符为 表示它后面的数据读入后 不赋给相应的变量例如 inta b scanf 2d 3d 4d 输入1234567890 则a被赋值为12 b被赋值为6789 格式化输入 scanf 注意事项1 scanf 函数没有精度控制 例如 scanf 3 1f 我们要想把12和23输入到a b中 必须键入a 12 b 23按回车键 格式化输入 scanf 使用实例从键盘输入一个大写字母 要求改用小写字母输出 提示 大小写英文字母的ASCII值相差32 include stdio h voidmain charc1 c2 printf 请输入一个大写英文字母 scanf c printf 和scanf 参数列表之间的区别 printf 使用变量名 常量 符号常量和表达式scanf 使用变量指针在scanf 中只有宽度没有精度使用scanf 时 对于参数列表应遵循以下规则 如果希望读取基本数据类型变量的值 应在变量名的前面加上符号 当读取指针变量指向的值时 在变量名前不能使用 scanf 示例 includevoidmain inta floatd charch name 40 printf Pleaseenterthedata n scanf d f c s scanf 使用非打印字符来判断输入数据是什么时候开始和结束的可以忽略空白区域和行边界来获取数据 控制台输入 输出 控制台输入 输出函数将其操作指向系统的标准输入和输出C中最简单的控制台输入 输出是 getchar 从键盘读取一个 且仅一个 字符putchar 在屏幕上输出一个字符 getchar 用于从键盘读取输入数据 方式为一次读一个字符缓冲字符 直到用户按回车键getchar 函数没有参数 但仍然必须使用括号 getchar 示例 includevoidmain charletter printf nPleaseenteranycharacter letter getchar printf nThecharacterenteredbyyouis c letter getchar 的使用示例 putchar C中的字符输出函数需要参数 putchar 的选项和效果 includevoidmain putchar H putchar n putchar t putchar E putchar n putchar t putchar t putchar L putchar n putchar t putchar t putchar t putchar L putchar n putchar t putchar t putchar t putchar t putchar O putchar 字符串输入输出函数 gets 和puts 函数无格式控制的专门对字符串处理的函数必须包含头文件stdio hgets 用来接受用户输入的字符串puts 函数用来向用户显示一个字符串需要一个字符串参数 显示该参数并自动换行puts Hello world 与printf Hello world n 的效果相同 本讲总结 如何使用printf 函数 如何使用scanf 函数 如何使用getchar 与putchar 函数 gets 与puts 是什么函数 循环 第五 六章 目标 理解while循环和do while循环理解C语言中的for循环使用逗号运算符理解嵌套循环使用break和continue语句理解exit 函数和goto语句 什么是循环 循环是程序中重复执行 直到满足指定条件才停止的一段代码C语言中 控制循环执行的条件在编码时用到了关系和逻辑运算符 循环结构的3种类型 for循环 while循环 do while循环 while循环 通用语法 while 表达式 语句 语句可以是空语句 一个简单的语句或语句块如果while循环中包含一组语句 必须用 括起来只要条件为真循环就会继续 While循环的流程图 表达式 否 否 语句 while循环 一个简单的例子 includemain inti 1 s while i 10 s i i printf n最后的结果是 d n s 和for循环不一样 while循环在执行循环前检查条件 统计从键盘上输入的数字的个数 includevoidmain intn 0 charc c getchar while c n if c 0 do while循环 do while循环中 循环体中的代码在条件测试执行前执行一次条件变为False时 dowhile循环终止 控制权传递给紧跟在while语句之后的语句 do 语句 while 条件 通用语法 do while的流程图 do while循环 一个简单的例子 includemain inti 1 s do s i i while i 10 printf n最后的结果是 d n s do while循环 includemain intn i i 0 do printf 请输入一个数 scanf d 接受并显示一些整数 直到输入 零 然后退出整个循环 并打印输入的整数的个数 课本例题 P80例 5 6 for循环 for循环的通用语法 for 初始化计数 条件测试 再求值参数 语句 初始化计数是一个赋值语句 它在进入循环前设置循环控制变量条件测试是一个关系表达式 它决定何时退出循环再求值参数定义每次执行循环时循环控制变量如何变化 for循环 for循环的三个部分必须用分号 隔开组成循环体的语句可以是单个语句 也可以是复合语句只要测试条件的求值结果为true for循环就继续执行 当条件变为false时 程序将继续执行for循环后面的语句 for循环的流程图 for循环 includevoidmain inti printf tThisisa n for i 1 i 6 i printf n t tnice printf n t tworld n 逗号运算符 通过在for循环中包含多个初始化表达式或增量表达式 可以扩展for循环作用域格式是 exprn1 exprn2 表达式被逗号运算符隔开 从左向右求值 逗号运算符 includemain inti j max printf Pleaseenterthemaximumvalue n scanf d for循环更多知识 使用for循环可以包含部分定义 或不包含任何定义for num 100 或for 使用for循环可以不包含任何循环体 语句 有助于提高某些算法的效率和创建时间延迟循环for i

温馨提示

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

评论

0/150

提交评论