C∕C++程序设计教程(上)ppt.ppt_第1页
C∕C++程序设计教程(上)ppt.ppt_第2页
C∕C++程序设计教程(上)ppt.ppt_第3页
C∕C++程序设计教程(上)ppt.ppt_第4页
C∕C++程序设计教程(上)ppt.ppt_第5页
已阅读5页,还剩194页未读 继续免费阅读

下载本文档

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

文档简介

C C 程序设计教程 上 第1章计算机程序设计与算法 C C 程序设计教程 主要内容有 l程序设计语言l程序设计过程l程序设计算法l自然语言描述计算机算法l程序流程图描述计算机算法lN S图描述计算机算法l用程序设计语言描述计算机算法 1 1程序设计 学习程序设计并不是简单地学习计算机语法规范或程序设计语言的本身 而是要学会怎么用计算机程序设计语言解决实际问题 提高工作效率和工作质量 计算机技术应用领域博大而广泛 谁也不可能完全学会计算机技术的方方面面 这是因为计算机涉及到的领域太广了 计算机技术的发展日新月异 即使学上很久我们也不可能完全学到头 可以说学无止境 1 1 1程序设计语言 1 科学计算语言 用于科学计算 基础是数学模型 过程描述的是数值计算 如FORTRAN语言 2 系统开发语言 用于编写编译程序 操作系统 数据库管理系统DBMS等 如C语言 3 实时处理语言 及时响应环境信息 可以根据外部信号对不同的程序段进行并发控制执行 如汇编语言 4 商用语言 主要用于商业处理 经济管理 基础为自然语言模型 如COBOL语言 5 人工智能描述语言 模拟人的思维推理过程 实现智能化控制等 6 模拟建模语言 用于模拟实现客观事物的发展与变化过程 以提前预测未来发展的结果 7 网络编程语言 在网络技术基础上进入深层次的应用研究与开发的语言 如Dephi适于网络化环境的编程 而JAVA是一种 新型跨平台分布式程序设计语言 语义规范与C语言相同等等 不再列举 1 1 2程序设计过程 1 程序实现过程程序设计是指我们使用一种计算机语言为实现解决实际问题的算法去设计编写计算机程序的过程 计算机语言是人与计算机进行交流的媒介 通过语言编写的程序 计算机就会准确地按程序步骤执行操作 计算机解决实际问题的一般过程如图1 1所示 2 程序设计的过程 程序设计大致包含以下几个步骤 1 分析问题程序设计首先要进行对问题的分析 明白我们要作什么 确定要使用的数学模型 2 确定算法确定算法即确定解决问题时要执行的一系列步骤 3 算法描述算法描述就是使用计算机语言对算法予以描述 4 确定程序设计语言由于不同的计算机程序设计语言有不同的特点 根据实际情况与需要选定好程序设计语言后 就可以用该语言编程实现以算法 5 调试和运行程序 1 2程序设计算法 计算机程序可以这样表示程序 算法 数据结构其中数据结构 对数据的描述 包括对数据类型的描述核对数据组织形式描述定义 算法 对操作过程的描述 即操作步骤的描述 如果考虑现代编程的工程化与多样性 可以这样表示 程序 数据结构 算法 程序设计方法 编程工具 语言环境 其中算法是关键 是实现程序设计的依据和基础 算法分析作的完整 作的精细 才能有完整的程序设计 才可能对程序进行优化 所以掌握算法至关重要 1 3计算机算法的表示 1 3 1自然语言描述期末数学成绩高于90分 英语成绩高于95分 有很好的团队协作精神的同学 可以报名参加国际数学建模比赛 有很多种理解 1 3计算机算法的表示 1 3 2程序流程图描述 顺序结构条件判断分支结构循环控制结构 图1 4表示复杂的算法看似乱麻 1 3计算机算法的表示 1 3 3N S图描述 图1 6N S图表示三种基本结构 1 4用程序设计语言描述 1 机器语言 Machinelanguage 例如 计算表达式m n z的值 并把结果值存到10010000号内存单元 假设已知某计算机的取数操作码为1000 除法操作码为1010 减法操作码为1001 传送操作码为0100 另外也知m n z中的三个数已分别存放在11110110 10101101 01010110号内存单元 用机器语言可描述编写如下程序 100011110110取出放在11110110内存单元的值101010101101除法操作放在10101101内存单元的值100101010110把结果值减去放在10101101内存单元的值010010010000把最后结果值存到10010000号内存单元 2 汇编语言 Assemblerlanguage 例如计算表达式m n z值的程序可以写成 LDAMDIVNSUBZMOVY使用这种语言计算机CPU不能直接识别 必须用事先存放在存储器中的 翻译程序 把汇编语言翻译成机器语言 计算机指令系统才能识别和执行 这个翻译程序称为编译汇编程序 翻译成机器语言描述的程序叫目标程序 3 高级语言 High levellanguage 不管使用机器语言还是使用汇编语言描述算法和编写程序 都没有摆脱计算机指令系统的束缚 到了1954年 出现了一种与具体计算机指令系统无关的语言 即高级语言 它与人们习惯使用的自然语言与数学语言非常接近 例如 y 2x2 x 1这样一个数学式子用高级语言来写 就写成y 2 x x x 1基本上是原样表达 这样描述程序算法显然就得心应手的多 高级语言的解释过程如图1 10所示 高级语言的编译过程如图1 11所示 1 5算法举例 算法步骤分析 S1 累加器变量sum赋初值0 即sum 0S2 计数器变量i赋初值1 即i 1S3 使累加器变量值sum加计数器变量值i 结果仍放在sum中 即sum sum i 此时sum值为sum sum i 0 1 1S4 使计数器变量i加1 结果仍放在i中 即i i 1 此时i值为i i 1 1 1 2S5 使累加器变量值sum加计数器变量值i 结果仍放在sum中 即sum sum i 此时sum值为sum sum i 1 2 3S6 使i加1 结果仍放在i中 即i i 1 此时i值为i i 1 2 1 3S7 使sum加i 结果仍放在sum中 可表示为sum sum i 此时sum值为sum sum i 3 3 6S8 使i加1 结果仍放在i中 可表示为i i 1 此时i值为i i 1 3 1 4S9 使sum加i 结果仍放在sum中 可表示为sum sum i 此时sum值为sum sum i 6 4 10 程序流程图如图1 12所示 N S图如图1 13所示 图1 12累加运算程序流程图图1 13累加运算N S图 C语言程序算法如下 main inti 1 sum 0 定义变量及其数据类型 while i 100 循环控制结构 sum i i i 1 循环体结束 printf sum d n sum 输出累加结果 程序算法不是唯一的 这个问题还有其它的算法 算法1 main floatsum 0 inti 1 loop if i 100 sum sum i i i 1 gotoloop printf n f sum 算法2 main floatsum 0 inti 1 while i 100 sum sum i i printf n f sum 算法3 main inti 1 sum 0 do sum sum i i i 1 while i 100 printf thesumis d sum 以此类推 可以很容易表示出计算之和的算法 当分母大于100时程序结束 输出计算结果 程序算法如下 算法3的N S图如图1 14所示 图1 14累加运算N S图 本章是计算机程序设计的基础 介绍了计算机程序设计语言的应用特点和发展演变 特别介绍了程序设计过程以及程序设计算法 学要重点理解和掌握的是计算机算法的表示方法 列举了用自然语言描述结局问题过程的特点与不足 作为一个程序设计人员 应该熟悉并掌握比较常用的程序流程图描述方法 以及N S图描述算法的基本技能 最终需要使用计算机语言 即程序设计语言描述并实现 本章通过算法举例以训练引导读者用计算机的思维表达解决问题的过程 以最终实现算法 这就是程序设计算法的根本 本章小结 1 6练习思考题 1 程序设计语言有哪些相同和不同之处 有哪些分类 2 试述程序实现过程包括那几方面 3 简述程序设计包含那些步骤 4 什么是计算机程序设计算法 5 用那些方法表示计算机算法 各有哪些利弊 6 程序流程图有哪些表示符号 你认为有哪些优缺点7 简述N S图有什么特点 8 请用程序流程图和N S图表示从键盘输入两个数 用计算机判别其大小的算法 第2章C语言程序设计概述 C C 程序设计教程 主要内容有 lC语言的发展lTurboC的集成环境lTurboC的特点与配置要求lTurboC的安装与启动lTurboC的热键lC语言的程序组成lC语言的标识符l语言的关键字 2 1C语言概述 C语言程序设计因其编译效率高 功能强大 编写风格优美流畅 广为流行 C程序设计集算法实现与软件系统开发成一体 广泛应用与软硬件系统开发的各种领域 并得到长久广泛地发展 应用与普及 学习和掌握C程序设计是学习和掌握计算机技术与软件系统开发的重要环节 熟练掌握算法设计和编程技能是学习的重点 2 1 1C语言的发展 C语言是70年代贝尔实验室 BellLaboratories 为描述UNIX操作系统和C编译程序而开发的一种系统描述语言 C语言的出现于自于编写计算机操作系统 1969年 美国贝尔实验室的研究员KenThompson和DennisM Ritchie开始用汇编语言编写UNIX 1970年KenThompson为了提高UNIX的可读性和可移植性 在BCPL语言的基础上 开发了B语言 1972年到1973年 D M Ritchie在B语言的基础上设计开发出了C语言 1973年 K Thompson和D M Ritchie合作 把UNIX用C语言改写了一遍 为UNIX的移植和发展奠定了基础 1978年 BrianW Kernighan和D M Ritchie合著了 TheCProgrammingLanguage 一书 被人们誉为标准版本 1982年 这本书被编译成中文教材 从此 C语言以其独特的优点受到了国内许多软件工程人员的青睐 在当时 对人们熟悉的FORTRAN Pascal等语言产生了很大的冲击 1987年 美国国家标准学会 ANSI 对C语言进行了规范并提出了美国国家标准C方案 得到了各国的承认 本教程的C语言主要以BorlandInternational公司的TurboC编译系统作试验平台 2 1 2C语言的特点 1 语言简洁 紧凑 使用方便灵活 2 运算符丰富 便于各种运算方法的实现 3 数据类型丰富 具有很强的数据处理能力 4 是一种结构化程序设计语言 5 便于模块化软件设计 6 语法限制上有较大的自由度 但对程序设计的熟练性要求较高 7 能够直接访问物理地址 并能直接驱动汇编语言 8 生成目标代码的质量和程序执行的效率相对较高 9 程序的可移植性相对较好 10 具有现代编程风格 沿用发展性好 C语言程序的基本形式 main 函数局部变量定义 执行语句 f1 形式参数列表 函数局部变量定义 执行语句 fn 形式参数列表 函数局部变量定义 执行语句 2 2TurboC的集成环境 目前常用的C语言集成环境有数种 包括C VisualC VisualC 等 一般教学或等级考试等提到C语言编译系统 主要指TurboC 本教材介绍的C语言集成环境主要以TurboC集成开发环境为实验平台 用以学习C程序设计算法与实现 在最后一章介绍C 程序设计技术 教材中的实例全部在TurboC2 0环境调试通过 2 2 1TurboC2 0的特点与配置要求 1 TurboC2 0的主要特点如下 1 编辑 编译 调试和运行一体化 2 综合调试程序具有单步执行 单步跟踪 断点设置 表达式监视和求值等功能 3 支持独立调试程序 4 具有更快的编译 链接程序和更快的内存分配函数与串函数 5 扩展内存规范用作编辑缓冲区 6 浮点运行速度快 7 高级图形库中增加了许多新函数 包括可安装的驱动程序和字体 8 支持命令行上的通配符 和 等 9 能自动进行快速缩进和回退及优化填充 10 MAKE实用程序可以自动进行依赖关系检查 11 新增加了一些实用工具 如THELP EXE OBJXREF EXE等 2 TurboC2 0的配置要求 对于现在绝大多数拥有个人电脑的来说 都能满足TurboC2 0的配置要求 在Windows2000 XP操作系统中均可以运行 1 TurboC2 0的安装 Turboc2 0的版本有两种编译程序 综合开发环境编译程序TC和命令行编译程序TCC 安装方法有两种 1 使用拷贝命令 将必需的文件拷贝到工作软盘或硬盘的TC子目录下 2 利用安装程序 使用INSTALL EXE文件 按照提示进行下去 直到安装完毕 2 TurboC2 0的启动 安装好TurboC2 0后 在TC目录下运行TC或TCC就可以分别启动集成开发环境或命令行编译程序 在MS DOS下或Windows98 2000 XP环境下进入TurboC 在Windows98 2000 XP的MS DOS命令提示符下启动TurboC进入Windows98 2000 XP的行命令模式 在MS DOS命令提示符下 进入TC安装目录 直接键入可执行文件TC EXE即可进入其集成环境 例如假使Turboc2 0安装在C 驱动盘的TC2子目录 即文件夹下 操作如下 首先转入C 盘 再进入TC2子目录C CDTC2 直接输入TC即可C TC2 TC 在Windows98 2000 XP视窗环境下启动TurboC 2 2 2TurboC2 0的安装与启动 路径设置 第一次进入TurboC以后必须设置系统相应路经 才能保证以后正确编译和执行C程序文件 首先确认当前Turboc2 0的安装盘 安装目录 obj目标文件输出目录 再进行设置 2 2 3TurboC的热键 TC启动后 出现主屏幕和版本信息 按任意键版本信息消失之后就可以在编辑窗口进行C程序设计了 在TC的主菜单中 包含File Edit Run Compile Project Option Debug和Break Watch8个菜单选项 按F10键能够激活它们 或同时按Alt加上每一菜单选项的第一个字母快捷激活 TC的功能热键表 2 3C语言的程序结构 C语言是由函数组成的 由必须要有的main 函数 有用户自己定义的函数 还有系统提供的标准的库函数 整个程序中函数定义不分主次 也没有先后之分 包括main 函数 2 3 1C语言程序的组成 例2 3在屏幕上输出一行字符串 WelcometoStudyCProgramLanguage main printf WelcometoStudyCProgramLanguage n 程序的运行结果将在屏幕上输出 WelcometoStudyCProgramLanguage 通过这个例题 可以了解到 1 任何一个C程序必须包含一个主函数main 并且主函数是唯一的主程序入口函数 此处的主函数相当于其他语言中的主程序 Main 在程序中的位置可以是任意的 不过 计算机总是从主函数处执行一个用户程序 main后面括号内 可以为空 如果需要 还可以包含适当的参数 2 花括号中的部分是函数体 主要由C语言的语句序列组成 每个语句后面要有一个分号 表示命令的结束 否则编译时出错 3 每个C程序由一个主函数和零到若干个函数组成 本例的程序包含一个主函数和一个函数printf 作为命令语句 初始说明部分 初始说明部分的位置在主函数之前 一般包括 1 包含文件 又称头文件 头文件的格式为 include 或 文件名 C环境为用户提供了很多标准库函数 每一个库函数都有自己的头文件 扩展名为 h 如果在程序设计时使用了库函数 则必须在初始说明部分将该函数对应的头文件包含进去 否则 程序会在编译时报错 2 宏定义宏定义的位置可以在初始说明部分 也可以在程序的其他位置 其命令格式为 define字符串常量使用宏定义替代一个字符串 可以减少程序中重复书写过程 请看下面的宏定义 definePI3 1415926使用宏名PI替代3 1415926 在程序中出现3 1415926的地方使用PI 就可以减小重点使用的工作量 而且不容易出错 在修改常量时也很简单 只要改变宏定义行就可以了 程序中用双引号括起来的字符串内的字符 不进行替换 如果宏定义在初始说明部分 它的作用域就是所在的源程序文件 也可以使用 undef命令终止宏定义的作用域 注意 包含文件和宏定义语句不是C语言命令语句 所以在书写时后面不要加分号 3 全局变量说明有关全局变量的知识 请参阅本书第4章 4 用户非整型函数说明用户函数部分是为了使程序执行特定的功能 由用户自己设定的函数 2 3 2C语言的标识符 是用户因为某种需要而由用户自己定义的变量 函数等作为字符标识 函数标识符和变量标识符的命名类似 也要遵循一定的规则 1 标识符必须以字母或下划线开始 2 标识符有效长度为255个字符 3 能用作标识符的字符有A Z a z 0 9或 下划线 4 不能使用关键字作标识符 5 标识符不能跨行书写 注意 1 为了便于读 写和记 标识符的命名最好选择能够代表一定意义的单词 如用day表示日期函数等 2 为了增强程序的可读性 应适当地使用下划线 如用load num表示取数据等 3 尽量使用约定俗成的标识符 如temp表示中间变量 x y z表示未知数等 4 标识符的长度不要太长 以减少不必要的工作量 5 与变量名类似 标识符的大小写表示不同的含义 C语言一般习惯上变量名小写 宏标识符大写 以示区别 2 3 3C语言的关键字 2 6本章小节 本章从C语言的发展可以了解到C程序设计的特点与结构的组成 介绍了TurboC的集成环境 TurboC2 0的特点与配置要求 以及可以灵活快速地使用TurboC集成开发环境所需要使用的快捷键 C语言程序设计首先要掌握C语言的程序结构组成 熟练使用C语言的标识符 熟悉C语言的保留字关键字等 对于初学者来说 本章应当重点掌握C语言结构特点与编成环境的使用 以便为程序设计的学习打下基础 本章的知识点较多 只要掌握常用的基本知识就可以了 2 7练习思考题 1 C语言在算法实现方面有哪些特点 2 C语言在程序设计方面有哪些优点 3 试举出与C语言关系比较接近的其它编译集成环境 4 从C程序设计编程的结构风格上看 主要的优点有哪些 5 编写一个简单的C程序 熟悉上机实践过程 输出结果如下 Thisisatestprogrammer 6 练习本章例题 熟悉程序调试过程 第3章C程序设计基础 l常量与变量l数据结构与数据类型l运算符的优先级与结合性l强制类型转换运算l算术运算符与算术表达式l关系运算符与关系表达式l逻辑运算符与逻辑表达式l赋值运算符与赋值表达式l逗号运算符和逗号表达式常用数学函数 3 1常量与变量 常量和变量都表现为某一数据类型 而在C语言中 常量不需要类型说明 变量则需要类型说明 即使用变量时需要 先定义 再使用 3 1常量与变量 C语言提供了丰富的数据类型 这些数据类型归纳如下 3 1 1常量 1 整型常量如 7 45 6789 06789 0 x6789 6789l等 2 实型常量如 2 34 2 34E 5等 4 字符串常量如 m abc mmm 等 5 控制字符用反斜扛 和特定字符组合表示 3 1 1常量 表3 1控制字符常量转义字符表 3 1 1常量 6 符号常量符号常量的定义形式为 define标识符常量其中 define也是一条预处理命令 预处理命令都以 开头 称为宏定义命令 在后面预处理程序中将进一步介绍 其功能是把该标识符定义为其后的常量值 3 1 2变量 1 变量说明在C程序设计中 使用变量时必须首先对它的数据类型进行说明 简单的定义格式为 数据类型说明符变量名列表 或数据类型说明符变量名1 变量名2 3 1 2变量 2 变量初始化初始化变量的简单格式 数据类型说明符变量名1 常量或表达式 变量名2 常量或表达式 或变量名 常量或表达式 3 1 2变量 3 变量与存储器 图3 2数据存储格式 3 2整型数据类型 数据类型与数据的存储有关 也与操作应用有关 数据类型可以从不同的方面进行分类 按照数据的运算性质 可以分为整型数据类型 实型数据类型和字符型数据类型 数据类型从长度上分 有8位 16位 32位和64位 从数据的符号来分 有无符号数和有符号数等 3 2 1整型变量的分类 在C语言中 整型变量的基本类型为int 根据不同变量的取值范围可以给它们加上不同的修饰符 1 基本型 类型说明符为int 在内存中占2个字节 2 短整量 类型说明符为shortint或short 所占字节和取值范围均与基本型相同 3 长整型 类型说明符为longint或long 在内存中占4个字节 3 2 1整型变量的分类 表3 2列出了C语言中各类整型数据所分配的内存字节数及数值的范围 例3 4带符号的整型数据运算 main inta b a 32767 b 32767 1 printf a d n a printf b d n b 程序运行结果 a 32767b 32768 例3 4带符号的整型数据运算 图3 4变量a赋值32767后的存放情况 图3 3变量b赋值32767 1的存放情况 数据溢出 但系统不会报错 如图3 3所示 3 2 2整型变量的定义 程序中用到的整型数据变量必须先定义 变量定义的一般形式为 整型类型说明符变量名1 变量名2 其中 整型类型说明符包括 short long int和unsignedshort unsignedlong unsignedint等 例3 5整型变量的定义与使用 main longx y inta b c d x 5 y 6 a 7 b 8 c x a d y b printf c x a d d y b d n c d 程序运行结果 c x a 12 d y b 14 3 2 3整型常量的表示方法 1 十进制整常数 十进制整常数没有前缀 其数码为0 9 2 八进制整常数 八进制整常数必须以0开头 即以0作为八进制数的前缀 3 十六进制整常数 十六进制整常数的前缀为0X或0 x 3 2 4整型常量的分类 一个int型整数 其值在 32768 32767 一个整型常量后加u或U后缀则被认为是unsigned类型 在内存中按unsigned规定的方式存放 例如 十进制长整常数 379L 八进制长整常数 012L 十六进制长整常数 0X15L 3 2 5整型数据的应用 整型数据是常用的一种数据类型 广泛应用在各种场合 有着各种实际用途 简单归纳起来 主要表现在如下几个方面 一般数值计算 主要是非浮点数或对精度要求不高的一些数值计算 表示计算机内部数据 如地址 指针等 表示字符编码 如ASCII码 汉字内码等 3 3实型数据类型 实型数据类型存储长度比较长 还可以带小数点进行计算 所以主要用于科学计算 实型数据类型还可以分为单精度 双精度和和长双精度 应用时根据需要定义和使用 3 3 1实型常量的表示方法 1 十进制数形式 由数码0 9和小数点组成 2 指数形式 由十进制数 加阶码标志 e 或 E 以及阶码组成 一个实数可以有多种指数表示形式 3 3 2实型变量 1 实型数据在内存中的存放形式在计算机内部实型数据都以指数形式存储 一般占4个字节 32位 内存空间 其中三个字节存放数字部分 一个字节存放指数部分 内存存放形式 3 3 2实型变量 2 实型变量的分类实型变量分为单精度 float型 双精度 double型 和长双精度 longdouble型 三类 3 3 2实型变量 3 实型数据的舍入误差由于实型变量是由有限的存储单元组成的 因此能提供的有效数字总是有限的 有效数字被舍去就会产生舍入误差 例2 8实型变量舍入误差的检验 main floata b a 123456 789e5 b a 20 printf f n a printf f n b 程运行结果 12345678848 00000012345678848 000000 3 3 3实型数据的应用 在使用实型数据时 选择哪一种实型要根据所处理数据的取值范围 计算要求的精度 或表达式结果的范围确定 例3 10各种数据的混合运算 3 4字符型数据类型 字符类型的数据以一个字节为单位存放 3 4 1字符常量字符常量是用单引号括起来的一个字符 例如 a b 都是合法字符常量 注意单引号只是字符常量和其他部分的分隔符 不是字符常量的一部分 3 4字符型数据类型 3 4 2字符变量字符变量用来存储字符常量 即单个字符 一个字符变量在内存中占一个字节 3 4 3字符数据的使用方法每个字符变量被分配一个字节的内存空间 字符值是以ASCII码的形式存放在变量的内存单元之中的 3 4字符型数据类型 3 4 4字符串常量 字符串常量是由一对双引号括起的字符序列 例如 RED program 1234 等都是合法的字符串常量 字符常量占一个字节的内存空间 字符串常量占的内存字节数等于字符串中字节数加1 3 4 5字符串函数 几个常用函数 strcat char dest constchar src strchr constchar str intc strcmp constchar s1 constchar s2 strcpy char dest constchar src strlen constchar s 3 4 6字符数据的应用 例3 14大小写字符转换main inta b a a b b a a 32 b b 32 printf c c n d d n a b a b 程序运行结果 A B65 66 3 5不同类型数据间的混合运算 不同类型的数据首先要转换成同一类型 然后进行运算 因此 整型 实型 字符型数据间可以混合运算 例如 10 a 1 5 8765 1234 b 3 6运算符与表达式 3 6 1运算符简介 3 6运算符与表达式 3 6 2运算符的优先级与结合性 3 6运算符与表达式 3 6 3强制类型转换运算强制类型转换运算符是用类型转换运算符将一个表达式转换成所需类型 其一般形式为 类型名 表达式注意 表达式应该用括号括起来 例如 double i将a转换成double类型 int a b 将a b的值转换成整型 float 5 3 将5 3的值转换成float型 3 7算术运算符与算术表达式 1 基本算术运算符十 加法运算符 或正值运算符例如 3十5 3 sqrt 4 56 width 减法运算符 或负值运算符例如 5 2 3 max v x 34 乘法运算符例如 x x 31 032 sqrt r 12 9 除法运算符例如 5 3 5 3 sin x 2 0 1 0 x x x 模运算符 或称求余运算符 两侧均应为整型数据例如 8 5结果3 1 2结果0 3 7算术运算符与算术表达式 2 自加与自减运算符 前缀运算 变量将变量的值加1 变量将变量的值减1 例如 i i使i的值加或减1 后缀运算 变量 将变量的值加1 变量 将变量的值减1 例3 18自加运算 main inti 3 printf d n i i i printf d n i 程序的运行结果是多少呢 有的系统按照自左而右顺序求解括弧内的运算 表达式的值相当于3 4 5 即12 i的值为6 而另一些系统把3作为表达式中所有i的值 因此3个i相加 得到表达式的值为9 在求出整个表达式的值后再实现自加3次 i的值变为6 3 8关系运算符与关系表达式 1 关系运算符关系运算符的功能是判断两个运算对象值的大小 而得出判断结果 关系运算符共有6种 见表3 4所示 3 8关系运算符与关系表达式 2 关系运算表达式用关系运算符将两个表达式连接起来 就构成了关系表达式 一般格式为 表达式1 关系运算符 表达式2 3 9逻辑运算符与逻辑表达式 逻辑运算符 3 9逻辑运算符与逻辑表达式 2 逻辑表达式 3 9逻辑运算符与逻辑表达式 逻辑与a b c表达式 3 9逻辑运算符与逻辑表达式 2 逻辑或a b c表达式 3 10赋值运算符与赋值表达式 1 赋值运算符赋值运算符一般语法格式 变量 表达式 2 不同数据类型的赋值处理如果赋值运算符两侧的类型不一致 但都是数值型或字符型时 在赋值时系统会自动进行类型转换 3 10赋值运算符与赋值表达式 3 复合的赋值运算符变量 表达式等价干变量 量 表达式变量 表达式等价干变量 量 表达式变量 表达式等价干变量 量 表达式变量 表达式等价干变量 量 表达式变量 表达式等价干变量 量 表达式注意 如果赋值号右侧是包含若干项的表达式 则相当于它有括号 如 x y 3 x y 3 x x y 3 不要错写成x x y 3 4 赋值表达式一般形式为变量OP表达式其中OP是赋值运算符 包括 等 如 a b 5 3 11逗号运算符和逗号表达式一般形式为 表达式1 表达式2 逗号表达式的求解过程是 先求解表达式1 再求解表达式2 整个逗号表达式的值是表达式2的值 例如 3 5 6 8 的值为14 3 12常用数学函数 使用数学函数必须include命令引入math h文件 它通常放在程序的开始 即如下面的格式 include常用数学函数abs 求绝对值 用法 intabs intx labs 求绝对值 用法 longlabs longx fabs 求绝对值 用法 doublefabs doublex sin 计算sin x 值 用法 doublesin doublex cos 计算cos x 值 用法 doublecos doublex 3 13变量初始化 在C语言程序设计中 可以在定义变量的同时给变量赋初值 如 inti 6 floatf 3 12 charc a 定义时也可以使被定义的变量的一部分赋初值 如 inta b c 8 3 14本章小节 本章是C语言程序设计的基础 内容涉及到编程使用的基本概念和基础知识 使读者对C语言的数据类型 运算符 表达式 不同数据类型之间的转换等有了初步的了解 为进一步学习C语言打下了良好的基础 本章的知识点在于掌握C语言数据类型的定义和赋值方法 学会使用有关运算符及表达式 只有很好的掌握了C的数据类型 表达式运算 才能恰当的运用于C语言的程序设计之中 3 15思考练习题 一 思考题二 选择题三 填空题四 编程题P64页 第4章顺序结构程序设计 lC语言的顺序结构l基本顺序结构语句l表达式和表达式语句l基本输入 输出l字符输入函数l字符输出函数l格式化输入 输出 4 1顺序结构流程概述 4 1 1程序的顺序结构顺序结构是其中最基本最简单的结构 构成它的语句有 数据类型语句 表达式语句 赋值语句和函数调用语句等 在顺序结构程序中 语句被按顺序执行 程序结构执行顺序如图3 1所示 简单顺序结构 includemain 变量定义 语句1 语句2 例4 1编写一个程序 用库函数输出字符OK 字样 include stdio h 包含说明输入 输出标准库函数的头文件 main chara b c 定义字符数据类型变量 a O 对变量进行赋值 b K c putchar a putchar b 调用函数输出变量值 putchar c 调用函数输出变量值 程序执行完成后结果 OK 4 2基本顺序结构语句 在C语言程序设计中 基本顺序结构语句是指能够完成指定操作的基本语句 这些语句主要有赋值语句 空语句 复合语句和函数调用语句 4 2 1表达式和表达式语句 表达式是操作数的运算符的组合体 由运算符连接操作对象构成的式子 它产生一个唯一的值 操作数 又称做操作对象 可以是数值 字符 函数 也可以是另一个表达式 但必须有值能够参加运算 根据表达式结果的数据类型 有数值表达式如数学运算表达式 逻辑表达式如关系运算表达式 逻辑运算表达式 条件运算表达式等等 表达式可以构成语句 一个表达式加一个分号 就构成了表达式语句 它的C语言格式 例如 1 0 2 a b c sqrt s s a s b s c 需要说明的是要注意表达式与表达式语句的区别 例如 a 5 4 2 2基本顺序语句 在C语言中 对变量赋值使用赋值语句 它是种使用十分普遍的语句 1 赋值语句赋值语句是由赋值表达式构成的 是在赋值表达式后加上 符号 它的C语言格式 或者 4 2 2基本顺序语句 2 空语句空语句也是一条有效的操作语句 空语句只有一个分号 构成一条空命令语句 它的C语言格式 空语句本身没有实际功能 表示什么操作都不做 但也经常用在一些特定的场合 比如空循环 跳转目标点等 请看下面的程序代码 4 2 2基本顺序语句 3 复合语句复合语句是用一对大括弧 括起来的一组语句 有时侯也称为 程序段 整体上是一条语句 称为复合语句 在C语言中的格式 语句1 语句2 或 语句1 语句2 4 2 2基本顺序语句 4 无条件转向语句无条件转向语句可以用来控制程序的流程转向 C语言中提供的无条件转向语句是goto语句 程序设计中可以根据需要 在程序中指定标号 作为goto语句的转向入口 可以改变程序的操作顺序 一般形式 goto语句标号 其中语句标号必须是在当前程序中能找到的有效标识 4 2 2基本顺序语句 5 函数调用语句函数调用语句是一次函数调用加上分号 构成 在C语言中的一般格式 函数名称 参数 函数调用语句完成由函数确定的操作或计算 函数可以是系统库函数 也可以为自定义函数 例如 getchar 4 3输入 输出函数语句 与像Basic Forth等高级语言不同 C语言不含有输入输出语句 它的输入和输出操作是通过专门的函数来完成 这些函数包含在C语言提供的系统函数库中 使用时引入相应的头文件 然后就可以调用了 在计算机系统中提供基本输入输出的设备被称做 标准输入 输出设备 如键盘 显示系统等 C语言提供了一组标准输入 输出函数 这些函数的说明及相关内容包含在stdio h头文件内 常用的输入 输出函数有 4 3 1字符输入函数 1 getchar 函数说明 intgetchar void 从标准的输入设备 如键盘读入一个字符 最简单的方法是调用函数getchar 该函数的功能是获取一个键盘的输入字符并返回ASCII码值 4 3 1字符输入函数 2 getche 函数说明 intgetche void getche 函数的功能是从键盘有回显地取一个字符 getche 使用直接视频或BIOS 从键盘读取一个字符 可以将它显示到当前文本窗口 4 3 1字符输入函数 3 gets 函数说明 char gets char string gets 函数的功能是从键盘读入一个以换行符结尾的字符串到s 并用空字符 0 代替s的换行符 gets允许输入串中包含某种空白字符如空格 制表符等 如果调用成功 则返回字符串参数s 如果遇到文件结束或出错 将返回null 4 3 2字符输出函数 1 putchar 函数说明 intputchar intch putchar 函数的格式是putchar c 功能是将字符c显示在屏幕上 如果putchar 函数调用成功 则返回字符c 4 3 2字符输出函数 2 puts 函数说明 intputs constchar s 输出字符串s到输出设备 函数执行成功则输出字符串在输出设备 返回最后字符 否则返回EOF 4 3 3格式化输入 输出 字符输入 输出函数只能输入或输出字符或字符串 如果要输入 输出其他类型的数据如整数或浮点数 就不能用这些函数 C语言系统函数库提供的printf 和scanf 函数可以根据需要 按规定的数据类型输入数据给变量 或将变量 表达式的内容输出 在printf 和scanf 函数中 数据类型由通过一特定的格式字符串转换 因此这两个函数又称为 格式化 输入 输出函数 1 printf 格式输出函数C语言的格式输出函数是printf 前面用到过这个函数的一部分功能 这里再介绍一下 printf 函数的功能是产生格式化的输出到标准输出 函数说明 intprintf 格式控制串 输出参数表列 不同的转换字符对应不同的数据类型 常用的转换字符及其含义请参阅表2 1 2 scanf 格式输入函数scanf 与printf 函数类似 但scanf 是从标准输入设备 stdio 接收数据 并按指定格式要求转换存入变量 它完成与printf 相反的转换机制 函数说明 intintscanf 格式控制串 地址表列 函数返回成功输入的项数 格式控制中可以包含转义字符 常用的转义字符如表4 2所示 不同的转换字符对应不同的输入 其含义请参阅表4 3 在 和格式符之间可以插入附加控制字符 如表4 4所示 4 4顺序结构程序实例 例4 16编写计算整数n平方根程序 输入一个整数 输出该数的平方根 分析 计算平方根可以直接应用C运行库提供的数学函数sqrt 这里要求从键盘输入数值数据 并且是整数 由于没有限制数据的范围 因此按C语言可用最大范围的整数类型和浮点数类型即long和double N S流程图 源程序 include includemain longx doubley printf n请输入一个整数 scanf ld 第5章选择结构程序设计 简单if分支结构if else两路分支结构if elseif else多路分支结构条件运算符与条件表达式switch case开关语句选择结构的嵌套 5 1if条件分支结构 5 1 1简单if分支结构if语句的简单形式为 if 表达式 语句 例5 1输入两个数分别赋给变量a和b 如果a的值大于b的值 则交换两个变量值 main floata b t printf ninputtworealnumber scanf f f 5 1 2if else两路分支结构 if else两路分支结构的if语句一般写为 if 表达式 语句1 else语句2 5 1 3if elseif else多路分支结构 if elseif else多路分支结构的if语句一般写为 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式n 语句n else语句n 1 if elseif else语句执行过程 5 2条件运算符与条件表达式 条件运算符是一个三目运算符 即有三个参与运算的量 由条件运算符组成的表达式称为条件表达式 其一般形式为 表达式1 表达式2 表达式3 5 3switch case开关语句 switch case语句又称多分支选择语句 它是另一种形式的多分支判断 使用switch case语句可以实现多分支选择结构 其一般形式为 switch 表达式 case常量表达式1 语句1 case常量表达式2 语句2 case常量表达式n 语句n default 语句n 1 图5 9switch语句执行过程 例5 6根据输入的数字来输出对应的星期几的英文单词 如输入 1 则输出 Monday 根据题意可使用一个多分支的程序结构 可以画出其流程图5 10如下 5 4选择结构的嵌套 选择结构可以嵌套使用 如if elseif else结构实际上就是if语句的嵌套形式 当需要处理问题的判断条件更为复杂时 可以用各种结构形式的if语句中相互镶嵌 可以是一个 也可以是多个if语句 形成相应的层层嵌套 但注意嵌套关系不能交叉 5 5选择结构程序应用实例 程序一 使用if形式的if语句来实现选择结构 main floatx y printf inputx scanf f 程序二 使用if elseif else形式的if语句来实现选择结构 算法N S图如图5 15所示 源程序如下 main floatx y printf inputx scanf f 程序三 使用嵌套的if语句来实现选择结构 算法如图5 16所示 源程序如下 main floatx y printf inputx scanf f 例5 11试编程求一元二次方程ax2 bx c 0的解 其算法N S图如图5 18所示 源程序如下 include math h main floata b c disc x1 x2 realpart imagpart printf Entera b c n scanf f f f 5 6本章小节 条件分支结构是程序设计流程控制的重要组成部分 其中简单的if分支结构可以实现一路流程的分支 if else两路分支结构可以实现二选一分支 if elseif else多路分支结构可以实现从多种情况条件中选择一路执行程序流程 条件运算符可以更加简洁地实现条件分支运算 而switch case开关语句能够方便清晰地实现多选一的程序流程执行 各种选择结构相互之间 根据逻辑上的需要可以分层嵌套 但是要注意层层匹配 不能交叉 第6章循环控制结构程序设计 l当型循环while结构l直到型循环do while结构lfor循环结构lbreak和continue语句l循环嵌套 6 1while当型循环结构 while循环的结构形式为while 条件表达式 循环体语句 while语句的一般形式可以表示为 while 条件表达式 语句1 语句2 语句n N S图和程序流程图如图6 1所示 例6 1编程实现求1 2 3 n之和 编程实现求1 2 3 n之和 并当求得的和第一次大于或等于100时 循环结束 输出该和的值 以及相应的循环次数n的值 N S图如图6 2所示 6 2do while直到型循环结构 C程序设计中的直到型循环结构使用do while语句实现 do while循环的一般形式为 do 语句 while 条件表达式 执行过程如图6 4所示 例6 5用do while语句实现求从i加到100之和 6 3for循环结构 for循环结构的基本形式为 for 表达式1 表达式2 表达式3 循环体语句 其中的表达式1一般用来初始化循环控制变量 表达式2为条件表达式 用来控制循环次数 表达式3用来修改循环控制变量 for循环的执行过程如图6 7所示 例6 9编程实现计算1 2 3 n 6 4break和continue语句 6 4 1break语句 6 4break和continue语句 6 4 2continue语句 6 5循环嵌套 3种循环结构 for while和dowhile 可以互相嵌套 如表6 1所示 6 6几种循环结构比较 在使用循环结构时还应注意 1 三种循环结构可以相互嵌套组成多重循环 循环之间可以并列 但不能交叉 2 可以用无条件转移语句goto使程序流程从循环体内跳转出循环体外 但不能从循环体外转向循环体内 3 在循环程序中应避免出现死循环 即应保证循环变量的值在运行过程中可以得到修改 以便循环条件最终为假 以结束循环 6 6循环结构综合实例 例6 9输入一个数m 判其是否为 素数 事实上只要被从2 之间的整数除即可 如果均不能整除 即为素数 所以有程序算法流程图 如图6 12所示 源程序 include math h main intm i k scanf d 例6 12利用循环嵌套输出打印九九乘法表 include main inti j for i 1 i 9 i for j 1 j 9 j if j i break printf d i j printf n 其结果将打出三角形的九九乘法表 如图6 14所示 6 8本章小结 语言提供了三种循环控制结构 for while和do while循环结构 各有自己的

温馨提示

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

评论

0/150

提交评论