书签 分享 收藏 举报 版权申诉 / 318
上传文档赚钱

类型教学课件:《CC++程序设计教程》龚沛曾.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3523655
  • 上传时间:2022-09-11
  • 格式:PPT
  • 页数:318
  • 大小:3.17MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《教学课件:《CC++程序设计教程》龚沛曾.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    CC+程序设计教程 教学 课件 CC 程序设计 教程 龚沛曾
    资源描述:

    1、1 C/C+程序设计教程程序设计教程第一章第一章 C/C+C/C+概述概述第二章第二章 基本数据类型、运算符和表基本数据类型、运算符和表达式达式第三章第三章 结构化程序设计结构化程序设计第四章第四章 数组和指针数组和指针第五章第五章 函数函数第六章第六章 结构和链表结构和链表第七章第七章 文件文件第八章第八章 面向对象程序设计基础面向对象程序设计基础 2第一章 C/C+概述1.1 C/C+发展简史1.2 简单的C/C+程序实例 1.3 基本语法成分1.4 数据的输入和输出1.5 编译预处理1.6 Visual C+简介31.1 C/C+发展简史发展简史C+:Bell实验室的实验室的Bjarne

    2、 StroustrupCSimula 67带类的C类基础1979年Cpre预处理器C+1.01985年C+程序设计语言C+2.01989年C+3.01993年类及派生类公有和私有构造函数,析构函数友元内联函数赋值运算符的重载虚函数函数和运算符的重载引用常量Const多重要继承保护成员对象的初始化与赋值的机制抽象类静态成员函数CONST成员函数模板C语言:语言:Bell实验室实验室的的D.M.Ritchie 1972年,为了编写UNIX设计的。两个重要的标准:老标准:1978年,The C Programming Language B.W.Kernighan和D.M.Ritchie合著 新标准;

    3、1983年,ANSI制定,称为ANSI C4C+的组成的组成C语言语言面向对象设计(OOP)Visual C+环境环境C+程序设计C语言程序MFC应用程序向导51.2 简单的C/C+程序实例例1.1 输入圆的半径,求面积注释:以/开始#include是编译预处理命令 把头文件的内容插入该处使用cin、cout函数必须有该命令main函数的函数体main函数的函数头void表示无返回值6例1.2 求两个数之和。求两个数之和。#include iostream.h int add(int x,int y)/定义定义add()函数,求两个数之和函数,求两个数之和int z;/说明说明z为为int类型

    4、的变量类型的变量 z=x+y;/将将x+y的值赋值给的值赋值给z return z;/结束结束add()函数的执行,并将函数的执行,并将z的值返回给主函数的值返回给主函数void main()/定义主函数定义主函数int a,b,c;/说明说明a、b、c为为int类型的变量类型的变量cinab;/从键盘输入两个数据送到从键盘输入两个数据送到a和和b中中c=add(a,b);/调用调用add()函数,计算函数,计算a+b,并把结果赋给,并把结果赋给ccoutcendl;/先输出先输出c的值,再输出换行符的值,再输出换行符7总结:(1)C/C+程序是一个或多个函数构成的,main函数一定要有。(2

    5、)不管有多少个函数,执行从main函数开始。在一个函数内,执行从上到下开始的。(3)注释从/开始的,只有增加可读性的作用。(4)书写形式自由 一行内可以写多条语句,一条语句也可以分写在不同行上。(5)C语言中大小写字母是不同的81.3 1.3 基本语法成分基本语法成分1.基本符号:(1)字母:52个 AZ az (2)数字字符:10个0 9 (3)下划线 _ 。(4)特殊符号:一般作运算符,如+、-、*、/、&2关键字关键字 有特定含义的、专用的单词。如int、char、break、for、define等。不能作变量名、符号常量名、函数名、类名等。93.标识符:由字母、数字和下划线三种字符组成

    6、 必须以字母或下划线开头合法标识符。A2 student area_of_circle num _dd Int不合法标识符2A A-B area of circle M.D int 大小写字母不等价 习惯上,变量名小写,符号常量大写。关键字不能作标识符用。例如,int、define等关键字不 能作为标识符用。定义标识符时最好能简洁且“见名知义”,以提高程序的可读性。如min表示最小值,average表示平均值,day表示日期。在Visual C+中,标识符中不能有汉字但是字符串和注释中可以有汉字。101.4 数据的输入和输出#include iostream.h或#include 1.cout

    7、cout表达式1表达式2表达式n;说明:数据的输出格式由系统自动决定。各表达式可以是任意类型的。#include iostream.hvoid main()int a=2;double b=3.32;char c=A;couta bendl;coutc abcdendl;11格式控制符(自学)格式控制符格式控制符说说 明明示示 例例语语 句句结结 果果endl输出换行符cout123endl123123123dec十进制表示coutdec123;123hex十六进制表示couthex123;7boct八进制表示coutoct123;173setw(int n)设置数据输出的宽度coutaset

    8、w(4)b;a b(中间有3个空格)setfill(int n)设置填充字符coutsetfill(*)setw(6)123;*123setprecision(int n)设置浮点数输出的有效数字位数coutsetprecision(5)123.456123.4612使用格式控制符输出数据(使用示例)#include iostream.h#include iomanip.hvoid main()int x=65;double f=123.456;cout123456789012345endl;coutdecx hexx octxendl;coutxendsxendl;coutfendl;cou

    9、tsetprecision(4)fendl;coutsetw(12)fendl;coutsetw(12)setfill(#)f变量变量2变量n;说明:数据之间用空格、TAB键或回车分隔#include iostream.hvoid main()int a;float b;coutab;couta+b=a+bendl;141.5 编译预处理1.5.1文件包含 头文件:.h如stdio.h、iostream.h 函数说明、常量定义作用:头文件的内容插入到源文件(.CPP)文件中。(1)#include 从系统指定的文件夹中找(2)#include 文件名从当前文件夹中找,现到系统指定的文件夹中找注

    10、意:一条文件包含命令只能包含一个文件编写源程序编写源程序预处预处理理编译编译连接连接执行执行预处理程序预处理程序 编译程序编译程序151.5.2 宏定义主要用来定义符号常数#define 标识符 常量例如:#define FALSE 0#define TRUE 1#define PI 3.1415926#define EPS 1.0e-6注意:符号常量一般大写行末一般不加分号不能对符号常量进行赋值。161.6 Visual C+简介 项目工作区输出窗口代码窗口代码窗口17简单C/C+程序的编写、运行过程1创建一个空工程;Win32 Console Application C+Source Fi

    11、le 2创建一个C+源文件,输入源程序;3进行编译、连接、运行。编译|编译TEST.cpp CTRL+F7编译|构建TEST.exe F7编译|执行TEST.exe CTRL+F518编译连接后生成的主要文件D:TESTTEST.dspTEST.dswTEST.cppDebugTEST.objTEST.exe程序调试程序调试1语法错误语法错误 错误信息错误信息D:TESTTEST.CPP(6):error C2146:syntax error:missing;before identifier cin 警告信息警告信息 D:TESTTEST.CPP(6):warning C4244:=:con

    12、version from const double to int,possible loss of data2逻辑错误逻辑错误 3调试调试设置断点:设置断点:Insert/Remove Breakpoint F9运行到断点:编译运行到断点:编译|开始调试开始调试|去去 F519Variables窗口Watch窗口Restart 终止当前调试,重新运行,停在第一条语句终止当前调试,重新运行,停在第一条语句Stop Debugging 结束当前调试和运行结束当前调试和运行Step Over 单步运行,不进入函数体内单步运行,不进入函数体内Step Out 从函数体运行到外面从函数体运行到外面20欢

    13、迎访问欢迎访问同济大学计算机系基础学科组网站同济大学计算机系基础学科组网站http:/021-6598020421第二章 基本数据类型、运算符和表达式2.1 数据类型2.2 变量和常量 2.3 运算符和表达式2.4 指针2.5 typedef语句2.6 应用举例222.1 2.1 数据类型数据类型程序中要对各种各样的数据进行描述和操程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型。数据类型的作,用到的数据都必须指明其类型。数据类型的作用:作用:指出了应为数据分配的存储空间的大小指出了应为数据分配的存储空间的大小规定了数据所能进行的操作规定了数据所能进行的操作 数据类型基本类型

    14、 构造类型 整型(int)实型 字符型(char)布尔型(bool)空类型(void)单精度型(float)双精度型(double)指针数组结构型(struct)共用体(union)枚举(enum)类(class)232.2 变量和常量1.变量的定义变量的定义程序运行过程中其值可变的量程序运行过程中其值可变的量,定义方式如下:定义方式如下:C/C+规定:规定:程序中所有变量必须先定义后使用,可及时程序中所有变量必须先定义后使用,可及时发现录入错误(如,定义的变量为发现录入错误(如,定义的变量为data,而程序体,而程序体中使用变量为中使用变量为date),同时还可限制非法运算(如:),同时还可

    15、限制非法运算(如:a%b,若若a,b为为float类型则出错)。类型则出错)。C+中变量可随时使用,随时定义。例如:例如:int a,b;(定义变量定义变量a和和b为整型为整型)float x,y;(定义变量定义变量x和和y为单精度为单精度实型实型)数据类型数据类型 变量名变量名表表;2.2.1 变量242.变量的初始化变量的初始化变量必须先有确定的值后才能参与各种相变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三:应的操作,变量获取值的途径有三:通过输入语句输入通过输入语句输入 (如:如:cina;)通过赋值语句赋值通过赋值语句赋值 (如:如:a=3;)通过初始化方式赋初值

    16、通过初始化方式赋初值 (如:如:int k=3;)所谓初始化是指在定义变量的同时指定变所谓初始化是指在定义变量的同时指定变量的初值,形式有二:量的初值,形式有二:例如:例如:int k=3,m=3,n(3);()int k=m=n=3;/不允许为多个变量同不允许为多个变量同时初始化时初始化数据类型 变量名=表达式;数据类型 变量名(表达式);253.变量引用C+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:数据类型&引用名=已定义的变量如:

    17、int a=3,&b=a;/定义b为a的引用b=5;/你知道此时a的值为多少吗?262.2.2 常量在程序运行过程中其值不能改变的量,有值常量和符号常量两种。1.整型常量进制进制形式形式实例实例错例错例十进制十进制以以数字数字19开始开始-3,+5,12045八进制八进制以数字以数字0开始开始(由由07之间数字组成)之间数字组成)023,-010078十六进制十六进制以以0 x或或0X开始开始(由由09及及AF组成)组成)0XAF,-0X510XFG272.实型常量十进制小数形式:由正负号、数字和小数点组成,如1.25、-1.25、17.和.1 指数形式:由尾数、指数符号e(或E)及指数构成,

    18、其中指数必 须是十进制整数。如1.25e-5、+1e10、-1.25e5。注意:e前面不能没有数字,e后面的数字必须为整数,也不能加园括号。如1E(-3)、E-5、1e2.1都是错误的。283.字符常量 C/C+提供了两类字符型常量:普通字符常量:用单引号括起来的一个字符。如:A、0、?。转义字符常量:以“”(反斜杠)开头的用单引号括起来的字符 序列。如:n 、t 、x61等。常用的转义 字符见p26。注意:0表示ASCII码为0的字符,它是一个空字符,注意其与0的区别,后者表示的是ASCII码为48的数字字符。字符型数据在内存中以ASCII码存储,故整型数据和字符型数据在一定范围内可以通用。

    19、如:x=a +2;printf(%d,a);294.字符串常量字符串常量 字符串常量是用双引号括起来的字符序列字符串常量是用双引号括起来的字符序列,系统在字符串常量最后自动加字符串结束符号系统在字符串常量最后自动加字符串结束符号 0 。例如:例如:字符串字符串“A”的存储形式:的存储形式:字符字符A的存储形式:的存储形式:5.符号常量符号常量是以标识符形式出现的常量,作用是便是以标识符形式出现的常量,作用是便于程序阅读和修改。于程序阅读和修改。C+C+中用中用definedefine命令或关命令或关键字键字constconst定义符号常量定义符号常量,形式如下:形式如下:A 0 A内存中实际存

    20、放的是这些字符的ASCII码#define 标识符 常量值 const 数据类型 标识符=常量值或:30注意:习惯上符号常量名大写,而变量名小写,以示区分。符号常量虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。#define PI 3.14 /const double PI=3.14#include iostream.hvoid main()float r=3.0,s,l;l=2*PI*r;s=PI*r*r;coutl=l,s=sendl;例2-11.演示不同精度圆周率的程序运行结果2.观察编译中的“警告”对程序运行的影响3.消除“warning”的方法312.3 运算符和表达

    21、式2.3.1 基本概念运算符具有三个属性:优先级:指运算的先后次序,共分15个级别。(见p27表1.2.4)结合性:指相同优先级运算符连续出现时的计算顺序,分自左 向右和自右向左两种,除特别声明外,皆指自左向右。目 数:指运算符要求的操作数的个数,包括单目、双目和三目,一般目数越少,优先级越高。表达式:由常量、变量、函数调用和运算符按一定规律组合在一 起构成的式子。如:a+14/(3+2)-sqrt(17)322.3.2 运算符1.算术运算种类:+(加法或取正)-(减法或取负)*(乘法)/(除法)%(求余数)+(自增)-(自减)其中:+和-的结合性则是自右向左 优先级:(从高到低)(+、-、+

    22、、-)(*、/、%)(+、-)正、负加、减33说明:说明:在除法运算中,当两个操作数都是整数时,在除法运算中,当两个操作数都是整数时,商也为商也为整数整数,小数部分一律舍去。如:,小数部分一律舍去。如:1/2 0 1.0/2 0.5%(求余运算)要求两个操作数都是(求余运算)要求两个操作数都是整型整型,结果为整除后余下的整余数。结果为整除后余下的整余数。自增、自减运算符自增、自减运算符(+、-)+i ,-i (在使用在使用 i之前之前,先使先使i的值的值加减加减1)i+,i-(在使用在使用 i之后之后,使使i的值加的值加减减1)若 i 的值为3,则:j=+i;j的值为4,i的值为4 j=i+;

    23、j的值为3,i的值为4注意:自增、自减运算符只能用于变量,而不能用于常量和表达式。()5+、(a+b)+342.关系运算种类:(小于)、(大于)=(等于)、=(大于等于)、!=(不等于)优先级:(从高到低)(、=)(=、!=)关系运算描述的是一种“判断关系”,其结果有“真(true)”和“假(false)”两种。用“1”代表“真”,用“0”代表“假”例如:53的结果为1,aB的结果为0思考:x为0到100之间的数能否表示为 0=x=100?353.逻辑运算种类:&(逻辑与)、|(逻辑或)、!(逻辑非)优先级:(从高到低)!&|其中,“!”是单目运算符,优先级高于算术运算符。“”和“|”低于关系

    24、运算符。逻辑运算通常用来连接关系运算,逻辑运算符两端的操作数如为“非”,就当作“真”来处理,如果是“”,便当作“假”来处理。逻辑运算的结果也只有 0(false)和1(true)两种。36运运算算符符 说说明明 优优先先级级 说说明明 例例 结结果果!取取反反 2 当当操操作作数数为为假假时时,结结果果为为真真!0 1&与与 11 操操作作数数均均为为真真时时,结结果果才才为为真真 2&0 5&3 0 1|或或 12 操操作作数数中中有有一一个个为为真真时时,结结果果为为真真 0|1 0|0 1 0 说明:说明:当多个当多个&连续出现时,如表达式连续出现时,如表达式&表表达式达式&表达式从左到

    25、右,只要一个操表达式从左到右,只要一个操作数为作数为0,结果就为,结果就为0,不进行后续运算。,不进行后续运算。当多个当多个|连续出现时,如表达式连续出现时,如表达式|表达表达式式|表达式从左到右,只要一个操作数表达式从左到右,只要一个操作数为为1,结果就为,结果就为1,不进行后续运算。,不进行后续运算。37#include iostream.hvoid main()int m,n=10;m=2&n+;coutm=m,n=y?x:y);/将和中较大的一个数赋值给变量max条件运算符的结合性是由右向左思考题:对n(0)个人进行分班,每班k(0)个人,最后不足k人也编一班,问要编几个班?(试用条件

    26、运算符表达)n%k0?n/k+1:n/k5.赋值运算格式:作用:将一个数据赋给一个变量,并以变量的值作为整个式子的值。变量 赋值运算符 表达式39其中赋值运算符可以是其中赋值运算符可以是“=”,也可以是也可以是复合赋值运算符复合赋值运算符,如如“+=”、“-=”、“*=”、“/=”和和“%=”等等。等等。复合赋值运算符的等价形式:复合赋值运算符的等价形式:(以(以“+=”为为例)例)例如:例如:b/=a+2 等价于:等价于:b=b/(a+2)结合性自右向左结合性自右向左若两端类型不同,则系统自动将右端类型若两端类型不同,则系统自动将右端类型转换为左端类型。转换为左端类型。例如:有定义例如:有定

    27、义 int a=3.78;则则a中存放的中存放的值为值为3左端只能是变量左端只能是变量(或数组元素或数组元素),不能为表达,不能为表达式或常量,如:式或常量,如:a+2*=b ()a=b+2=c+5 ()变量+=表达式变量=变量表达式是一个整体406.逗号运算形式:e1,e2,e3,其中e1、e2、e3均为表达式,从左向右依次计算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如:for(i=0,j=n;ij;i+,j-)逗号运算符的优先级别最低。417.数据类型的转换数据类型的转换分为显式(强制)转换和隐式(自动)转

    28、换。强制转换格式:或:将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。假设、为float型数据,则(int)(x+y)强行将+的值转换成整型,x和y仍为float型。自动转换:在不同类型数据进行混合运算时,系统自动进行的类型转换。(类型名)表达式类型名(表达式)42char short int unsigned longunsigned longfloatdoublelong double必定的转换混合运算时由低向高转换自动转换还包括赋值运算时赋值号右端类型向左端类型的转换8.内部函数 C/C+中提供了多种内部函数供用户编程序时直接调用,只需把包含内部函数的头文

    29、件,通过#include 预处理命令装入到程序中。例如,程序中要使用平方根函数sqrt,应该在程序加入:#include math.h“432.4 指针1.基本概念 每个变量在内存中存放都对应一段地址,第一个字节的地址就是变量的地址,将存放地址的变量称为指针变量。&求地址 变量的地址在编程阶段是不知道的 在程序中可以使用&运算符求得变量的地址。int x;&x就是变量的地址44取内容*(地址)表示根据地址取内容如图中所示,*(&x)的值为4指针指针是一种变量,存放另一个变量的地址。int x=4;int *p;p=&x;p就是一个指针,存放x的地址。p指向x,*p的值为4,*p就是x。出现x的

    30、地方可以用*p代替,出现*p的地方可以用x代替。10014px452.定义及初始化 定义定义 例如:例如:int int *p p;float float *q;q;指针所指对象的类型。指针所指对象的类型。初始化初始化在定义的同时赋初值,称为指针变量在定义的同时赋初值,称为指针变量的初始化。的初始化。例如:例如:float d=1.5,float d=1.5,*p=&dp=&d;可改写为:可改写为:float d=1.5,float d=1.5,*p;p;p=&d;p=&d;/注意不能写做注意不能写做*p=&dp=&d数据类型 *标识符;不是指针名的一部分&d1.5pd46 假定有定义:int

    31、*p,a;p=NULL;指针的值为NULL(0)表示不指向任何对象。p=&a;p指向变量a。p1=&a;p2=p1;相同类型的指针变量可以相互赋值 例,假设有定义:int a,*p;float f;则以下形式不允许:()p=&f;()p=100;3.运算赋值运算47算术运算p+n(或p-n):p+n:指向后面的第个元素。p-n:指向前面的第个元素。p+n的值为:p的值n*sizeof(p指向的类型)如,有定义:int a,*p=&a;假设a的地址为1000,则:p的值为1000p+3的值为:1000+3*sizeof(int)=1000+3*4=101248自增(自增(+)和自减()和自减(-

    32、)p+p+、+p+p、p-p-、-p-p自增或自减后自增或自减后p p指向前一个或后一个元素指向前一个或后一个元素 指针相减指针相减两个类型相同的指针可以相减,结果为两个类型相同的指针可以相减,结果为这两个地址差之间能够存放的数据个数(数这两个地址差之间能够存放的数据个数(数据类型为指针所指的类型)。据类型为指针所指的类型)。如,有定义:int*p1,*p2;假设p1指向1000,p2指向1008,则p2p1的值为:(1008-1000)/sizeof(int)=2*p+*(p+)*p p +(*p)+*p(*p)+494.new和deletenew运算符形式:指针=new 数据类型;指针=n

    33、ew 数据类型(初值);或50delete运算符用于释放用new申请的动态存储空间,形式为:delete 指针;delete 指针;或无需指明数组长度只能释放由new申请的动态变量例:int a=3,*p=&a,*q;q=new int(6);delete p;()delete q;512.5 typedef语句形式:typedef 数据类型 新的数据类型名;该语句作用是为已有的数据类型定义新的名称,使其更符合Windows系统中的相关对象的含义,可以像标准C+中的数据类型一样使用这些新定义的类型。如:typedef char CHAR;CHAR c1;/等价于char c1;522.6 应用

    34、举例例2-3 用代码表达下列命题:1.能且只能被和中的一个数整除。解:或 2.ch是大写字母。解:思考上述命题可否描述为Ach=A&ch=Z53#includeiostream.h#includeiomanip.h#includemath.hvoid main()float a,b,c;double l,s;coutca;b=sqrt(c*c-a*a);/sqrt为内部函数,对其的说明包含在头文件math.h中l=a+b+c;s=a*b/2;cout计算结果:endl;coutsetw(8)另一直角边=bendlsetw(11)周长=lendlsetw(11)面积=sx;c4=x=0?+:-;

    35、/x的符号存入c4x=abs(x);/求整型数x的绝对值c3=x%10;/x%10为个位数字x=x/10;c2=x%10;c1=x/10;cout数符 百位数 十位数 个位数endl;coutsetw(2)c4setw(8)c1 setw(8)c2setw(8)c3endl;例2-5 编程输入一个三位整数,依次输出该数的正(负)号和百 位、十位、个位数字。程序分离出符号位后分解各数位第三章第三章 结构化程序设计结构化程序设计 3.1 3.1 顺序结构顺序结构 3.2 3.2 选择结构选择结构 3.3 3.3 循环结构循环结构 3.4 3.4 其他控制语句其他控制语句 3.5 3.5 应用举例应

    36、用举例 3.1 3.1 顺序结构顺序结构 顺序结构:按照语句出现的先后顺序依次执行。3.1.1 表达式语句表达式语句 形式:表达式;例如:i+;sum=a+b;coutabendl;3.1.2 空语句空语句 形式:;作用:当程序中某个位置在语法上需要一条语句,而在语义上又不 要求执行任何动作时,可放上一条空语句。一般适用于在循环语句中做空循环体;如:for(m=0;m1000;m+);3.1.3 复合语句复合语句 形式:形式:变量定义变量定义 语句组语句组 作用:当程序中某个位置在语法上只允许一条语句,作用:当程序中某个位置在语法上只允许一条语句,而在语义上要执行多条语句才能完成某个操作时,而

    37、在语义上要执行多条语句才能完成某个操作时,需要使用复合语句。需要使用复合语句。例如:例如:if(x=0)couta;coutb;3.2 3.2 选择结构选择结构 选择结构选择结构:根据条件的值来判断程序的流向。根据条件的值来判断程序的流向。C/C+C/C+中,中,提供两类选择控制语句提供两类选择控制语句:if语句,实现语句,实现n分支,要求分支,要求n个表达式个表达式;switch语句,实现多分支;只用语句,实现多分支;只用1个表达式。个表达式。3.2.1 if 语句语句 if语句的三种形式语句的三种形式:形式形式1 1:if(表达式表达式)语句语句 作用:当表达式为真作用:当表达式为真(非非

    38、0)时,执行表达式后面的语时,执行表达式后面的语句句,否则绕过该语句,而执行其后面的语句。否则绕过该语句,而执行其后面的语句。【例例3.13.1】已知两个数已知两个数x和和y,比较它们的大小,使得,比较它们的大小,使得x大于大于y。表达式 语句 false true if(xy)t=x;x=y;y=t;coutxy;#include iostream.hvoid main()int x,y,t;cout输入输入 x yxy;if(xy)t=x;x=y;y=t;/x与与y交换交换 coutxyy)if(xy)max=x;min=y;max=x;min=y;elseelse max=y;min=x

    39、;max=y;min=x;形式形式3 3:if(表达式表达式1)语句语句1else if(表达式表达式2)语句语句2 else if(表达式表达式n)语句语句nelse 语句语句n+1作用:作用:当表达式当表达式1 1的值为的值为truetrue时,执行语句时,执行语句1 1;否则判断当;否则判断当表达式表达式2 2的值为的值为truetrue时执行语句时执行语句2 2;依此类推,若表达式的;依此类推,若表达式的值都为值都为falsefalse,则执行语句,则执行语句n+1n+1。表 达 式 2 表 达 式 n tru e false 语 句 n 语 句 n+1 语 句 2 语 句 1 表 达

    40、 式1 false false tru e tru e 【例例3.33.3】已知成绩已知成绩markmark,要求显示对应五级制的评定,评定条件:,要求显示对应五级制的评定,评定条件:if(mark=90)cout 优优;else if(80=mark&mark 90)cout 良良;else if(60=mark&mark 70)cout 及格及格;else if(70=mark&mark 80)cout 中中;else cout=60)cout=70)cout=80)cout=90)cout 优优;else coutyz。可用一个可用一个IF语句和一个嵌套的语句和一个嵌套的IF语句实现。语

    41、句实现。if(xy)t=x;x=y;y=t;if(yz)t=y;y=z;z=t;if(xy)t=x;x=y;y=t;3.2.2 switch语句语句形式:形式:switch(表达式)表达式)case case 常量表达式常量表达式1 1:语句组:语句组1 1;breakbreak;case case 常量表达式常量表达式2 2:语句组:语句组2 2;breakbreak;case case 常量表达式常量表达式n n:语句组:语句组n n;breakbreak;default default:语句组语句组n+1n+1 执行顺序:当表达式的值与某个常量表达式的值相等时,则执行该常量表达式后面相应

    42、的语句,若使用了break,则执行完该语句后便退出switch语句;否则,还要依次执行其后面的各条语句。若找不到相匹配的常量表达式,则执行default后面的语句。必须为整型或字符型 2a+1 (1=a2)2a+1 (1=a2)【例例3.53.5】用用switchswitch结构求分段函数结构求分段函数b=ab=a2 2-3 (2=a4)-3 (2=a=1&a=2&a4:.default:b=a;共用同一个语句组 思考:若省去思考:若省去break语句语句,情况会怎样?,情况会怎样?3.3 循环结构循环结构 C语言提供了三种循环语句:语言提供了三种循环语句:流程图如下:流程图如下:while

    43、do-while forwhile(表达式表达式)语句语句do语句语句while(表达式表达式);for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句【例例3.6】用上述三种循环语句求用上述三种循环语句求 while语句:1 0 01nsnn=1;s=0;while(n=100)s=s+n;n=n+1;n=1;s=0;do s=s+n;n=n+1;while(n=100);do-while语句:for(n=1,s=0;n1e-5)e+=t;t/=i;i+;int i(1);float t(1),e(0);for(;t1e-5;)e+=t;t/=i;i+;for(i=1,t=1,e=

    44、0;t1e-5;e+=t,t/=i,i+);分号不能省略空语句3.3.3 循环的嵌套循环的嵌套循环的嵌套:循环体内包含另一个完整的循环结构。循环的嵌套:循环体内包含另一个完整的循环结构。三种循环语句皆可以相互嵌套三种循环语句皆可以相互嵌套 。【例例3.83.8】打印九九乘法表打印九九乘法表#include “iostream.h”void main()coutt 九九乘法表九九乘法表endl;coutt-endl;for(int i=1;i=9;i+)for(int j=1;j=9;j+)coutij=i*jt;cout0;m-)if(m%6=0)break;coutm0;m-)if(m%6=

    45、0)continue;coutmm;max=m;/第一个数假设为最大数 while(cinm,m!=0)if(mmax)max=m;max=0;/设一个较小的数为最大值的初值 for(int i=0;im;if(mmax)max=m;以输入0作为结束,输入数的个数未知 输入数的个数已知 2.最大公约数最大公约数【例例3.113.11】用辗转相除法求两自然数的最大公约数用辗转相除法求两自然数的最大公约数。算法思想:算法思想:(1)对于已知两数对于已知两数m,n,使得使得mn(2)m除以除以n得余数得余数r(3)若若r=0,则,则n为最大公约数,结束;否则执行为最大公约数,结束;否则执行(4)(4

    46、)mn,nr,再重复执行,再重复执行(2)m n r12 5 2 5 2 1 2 1 0 辗转相除法while(r=m%n)!=0)m=n;n=r;coutn n=n-m nm m、n为公约数 m=nwhile(m!=n)if(mn)m-=n;else n-=m;#include iostream.hvoid main()int m,n,t,r;cout请输入请输入 m n mn;if(mn)t=m;m=n;n=t;while(r=m%n)!=0)m=n;n=r;cout最大公约数为最大公约数为 mendl;程序:程序:3.质数质数 【例例3.123.12】求求2 2100100之间的素数,并

    47、以每行显示之间的素数,并以每行显示8 8个个质质数。数。质数:除质数:除1和它本身外,不能被其他任何一个整数整除的自然数。和它本身外,不能被其他任何一个整数整除的自然数。分析:分析:(1)判别某数判别某数m是否为素数最简单的方法是是否为素数最简单的方法是:用用i=2,3,m-1逐个判别逐个判别m能否被能否被j整除,只整除,只要有一个能整除,要有一个能整除,m不是素数,退出循环;若都不能整除,则不是素数,退出循环;若都不能整除,则m是素数。可进一步证明:是素数。可进一步证明:若若m不能被不能被 中任一整数整除,则中任一整数整除,则m为质数。为质数。(2)每行显示每行显示8个,只要对求得的质数计数

    48、,满个,只要对求得的质数计数,满8个换行。个换行。m2 .for(i=2;m%i!=0;i+);if(i=m).k=sqrt(m);for(i=2;ik).程序:程序:#include“iostream.h”void main()int m,i,countm(0);bool tag;for(m=2;m=100;m+)tag=false;/tag初值为初值为false for(i=2;i=m-1;i+)if(m%i=0)tag=true;if(tag=false)/等价于等价于 if(!tag)coutmt;countm+;if(countm%8=0)cout=1e-5)sinx+=t;t=-t

    49、*x*x/(i+1)*(i+2);i=i+2;5.穷举法穷举法【例例3.143.14】百元买百鸡问题。假定小鸡每只百元买百鸡问题。假定小鸡每只5角,公鸡每只角,公鸡每只2元,母鸡每只元,母鸡每只3元。现有元。现有100元钱要买元钱要买100只鸡,列出所有可能的购鸡方案。只鸡,列出所有可能的购鸡方案。分析:分析:(1)设母鸡、公鸡、小鸡各为设母鸡、公鸡、小鸡各为x、y、z只,列出方程为:只,列出方程为:x+y+y=1003x+2y+0.5z=100三个未知数,两个方程,此题有若干个整数解。三个未知数,两个方程,此题有若干个整数解。(2)采用试凑法采用试凑法(也称为穷举法或枚举法也称为穷举法或枚举

    50、法)来实现,即将可能出现的各种情况一一罗列测来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。试,判断是否满足条件,采用循环结构来实现。用三重循环来实现用三重循环来实现:for(x=0;x100;x+)for(y=0;y100;y+)for(z=0;z100;z+)if(3*x+2*y+0.5*z)=100)&(x+y+z)=100)coutsetw(9)xsetw(9)ysetw(9)zendl;用二重循环来实现用二重循环来实现:for(x=0;x=33;x+)for(y=0;y=50;y+)z=100-x-y;if(3*x+2*y+0.5*z)=100)co

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:教学课件:《CC++程序设计教程》龚沛曾.ppt
    链接地址:https://www.163wenku.com/p-3523655.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库