c++程序设计谭浩强第3章.doc





《c++程序设计谭浩强第3章.doc》由会员分享,可在线阅读,更多相关《c++程序设计谭浩强第3章.doc(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 程序设计初步31 面向过程的程序设计和算法3.1.1 算法的概念一个程序应包括对解决问题所需要的数据的描述和对数据处理的描述。1对数据的描述,即数据结构。2对数据处理的描述,即计算机算法。算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。为此,著名计算机科学家沃思(Nikiklaus Wirth)提出一个经典公式: 数据结构 + 算法 = 程序案例3.1 输入三个数,求其最大值。问题分析:设num1,num2,num3存放3个数,max存放其最大值。为求其最大值,就必须对3个数进行比较,可按如下步骤去做:输入3个数num1,num2,num3;先把第一个数num1的值赋给max;将
2、第2个数num2与max比较,如果num2max,则把第2个数num2的值赋给max(否则不做任何工作)将第3个数num3与max比较,如果num3max,则把第3个数num3的值赋给max(否则不做任何工作)输出max的值,即最大值。从案例中可以看出,首先分析问题,然后寻找一种实现这个问题所要完成功能的方法,这种方法的具体化就称为算法。因此可以说:算法是由一套明确的规则组成的一些步骤,他指定了操作顺序并通过有限个步骤将问题解决、得出结果。3.1.2 算法的特性一个算法应具有以下5个特性:(1)有穷性一个算法必须总是在执行有限个操作步骤和可以接受的时间内完成其执行过程。(2)确定性算法中的每一
3、步都必须有明确的含义,不允许存在二义性。(3)有效性算法中描述的每一步操作都应该能有效地执行,并最终得到确定的结果。(4)输入一个算法有零个或多个输入数据。(5)输出一个算法有1个或多个输出数据。3.1.2 算法的表示方法(P46)算法的表示方法很多,常见的有:自然语言、传统流程图、N-S结构图、伪代码、PAD图等。(1)用自然语言表示自然语言就是人们日常使用的语言,可以是中文、英文等。用自然语言表示的算法通俗易懂,但一般篇幅冗长,表达上往往不易准确,容易引起理解上的“歧义性”。所以,一般用于算法较简单的情况。(2)用传统流程图表示传统流程图是用规定的一组符号、流程线和文字说明来表示各种操作算
4、法的表示方法。传统流程图常用的符号如图3.1所示案例3.1 用传统流程图描述的算法如下图所示。(3)用N-S结构图表示N-S结构图的目标是开发一种不破坏结构化基本构成元素的过程设计表示。其主要特点是:完全取消了流程线,不允许有随意的控制流,全部算法写在一个矩形框内,该矩形框以三种基本结构(顺序、分支、循环)描述符号为基础符合而成。案例3.1 用N-S结构图描述如下 (4)用伪代码表示伪代码是一种介于自然语言和计算机语言之间的文字和符号来描述算法。伪代码的表现形式比较灵活自由,没有严谨的语法格式。案例3.1用伪代码描述如下input num1,num2,num3num1maxif num2max
5、 then num2 maxif num3max then num3 maxprint max32 C+程序和语句 一 C+程序的组成 (P47)预处理命令声明部分函数二、C+的语句概述 (P48)一条完整的语句必须以分号“;”结束。C+程序语句有如下几类:(1)说明语句用来说明变量的类型和初值。如:float a,b,c;int sum=0;(2)表达式语句由一个表达式构成一个语句,用以描述算术运算、逻辑运算、或产生某种特定动作,在任何表达式最后加一个分号就构成了一个语句。如:c=a+b /*赋值表达式*/c=a+b; /*赋值表达式语句*/注:掌握表达式语句的用法,关键在于要正确理解有关表
6、达式的内容。(3)程序控制语句用来描述语句的执行条件与执行顺序的语。C+的控制语句有9种,如下所示。其语句中的括号( )表示其中是条件,表示内嵌的语句if () else 条件(分支)语句switch 多分支选择语句for () 循环结构语句while () 循结构环语句do while () 循环结构语句continue 结束本次循环语句break 中止执行switch或循环语句goto 转移语句return 从函数返回语句(4)复合语句复合语句是由一对花括号 括起来的一组语句。如果要在只执行一条语句的地方执行多条语句,那么这多条语句要用一对花括号 括起来构成一条复合语句。例如: c=a;a
7、=b;b=c; /实现a,b两个变量值的交换(5)函数调用语句函数调用语句是由一次函数调用加一个分号而构成的一个语句。例如:max(x,y);(6)空语句空语句不进行任何操作,它仅由一个分号“;”构成。通常用在应该放置语句而又不需要执行任何动作的地方,例如:;33 赋值语句 (P4950)赋值语句是由赋值表达式加上一个分号构成的。最简单的一种形式为:变量=表达式;例如: rad=14.5; /*将实型数赋给变量rad*/ cr=2*3.14*rad; /*将表达式2*3.14*rad的值赋给变量cir*/说明:“=”是赋值符号,赋值符号的右边是由常量、变量、运算符和函数组成的表达式。因赋值语句
8、是由赋值表达式加上一个分号构成,所以下面是合法的赋值语句:i+;x+=2;j-;注:在程序设计中,赋值语句不仅用于为变量进行赋值,同时还大量用于运算处理。34 C+的输入与输出(P5057)3.4.1 输入流与输出流的基本操作在C+中,将数据从一个对象到另一个对象的流动抽象为“流“,如:每次输入或输出都可以看做是数据流。数据的输入与输出时通过I/O流来实现的。1输出操作标准输出流cout与流插入运算符 联用,可实现一般的屏幕数据输出。一般格式如下: cout表达式表达式说明:(1)在输出语句中,可以串联多个插入运算符,输出多个数据项。例如: cout”hellon”; cout”how are
9、 you?”; cout”My name is Alice”; coutendl;可写成:cout”hellon”how are you?”My name is Alice”endl;或:cout”hellon”how are you?” ”My name is Alice” endl;注:中间的行尾没有分号结尾(2)在插入运算符后面可以是任意复杂的表达式,系统将自动计算出它们的值,并传给输入符。例如:cout“3+4=“”联用,可实现一般的键盘输入。一般格式如下: cin 变量1变量2 说明:在输入语句中,提取符可以连续写多个,每个后面跟一个变量。例如: int a,b; cinab;用户在
10、输入多个数据时,各数据之间应用空格分隔。(P53)3.4.2 在输入流与输出流中使用控制符C+提供的预定义的操作符见P53表3.1说明:(1)C+中所有不带形参的操作符都定义在头文件iostream中,带形参的操作符定义在头文件iomanip.h中;(2)在进行输入输出时,操作符必须嵌入到输入或输出键中用来控制输入输出格式。案例32 操作符的使用#include#includeusing namespace std;int main()coutsetw(10)123567endl;cout123setiosflags(ios:scientific)setw(20)123.endl;cout12
11、3setw(10)hex123endl;cout123setw(10)oct123endl;cout123setw(10)dec123endl;coutresetiosflags(ios:scientific)setprecision(4)123.endl;coutsetiosflags(ios:left)setfill(#)setw(8)123endl;coutresetiosflags(ios:left)setfill($)setw(8)456endl;return 0;案例33 各行小数点对齐P53例3.1#include #include using namespace std;int
12、 main() double a=123.456,b=3.14159,c=-3214.67; coutsetiosflags(ios:fixed)setiosflags(ios:right)setprecision(2); coutsetw(10)aendl; coutsetw(10)bendl; coutsetw(10)cendl; return 0;3.4.3 用getchar和putchar函数实现字符的输入和输出1. 字符输出putchar函数putchar()函数的功能是用于将一个字符输出到显示器上显示。putchar()函数的一般调用形式为: putchar(c);即把变量c的值输
13、出到显示器上,这里的c 可以是字符型或整型变量,也可以是一个转义字符。案例3.4 putchar()函数应用举例1#include using namespace std;int main() char a,b,c,d; a=g; b=o; c=111; d=d; putchar(a); putchar(b); putchar(c); putchar(d); return 0;运行情况如下:good说明:putchar()函数只能用于单个字符的输出,并且一次只能输出一个字符。2. 字符输入grtchar函数getchar()函数的一般调用形式为:c= getchar();案例3.5 getch
14、ar()函数应用举例P56例3.3#include using namespace std;int main()char c; c=getchar(); /*接收用户从键盘上输入的一个字符*/ putchar(c+32); /*输出字符变量c+32后的值*/ putchar(n); return 0;运行情况如下:A a 说明:getchar()函数只能用于单个字符的输入,且一次只能输入一个字符3.4.4 用scanf和printf函数实现输入和输出 (P57)C+保留了C的由标准库函数printf(),scanf()来实现输入/输出操作的方法。一、printf()格式输出函数 格式输出函数p
15、rintf()的功能是按指定的格式向显示器输出一个或多个任意类型的数据。printf()函数的一般调用形式为:printf(“格式控制”,输出项表);例如:printf(“hello”);printf(“The area is :%fn“,area);说明:格式控制。格式控制的两边必须用引号,其中的内容可以包含:普通字符、格式说明符和转义字符(a)普通字符:即需要原样输出的字符信息。(b)格式说明符:用%开头后面跟有一个字母,它规定了输出项的输出形式。格式说明符在个数和类型上应与输出项匹配。常用的格式说明符见下表。案例36 printf输出形式举例1#include using namespa
16、ce std;int main() int num1,num2; float r1,r2,re; char ch; num1=65; num2=-3; r1=234.5; r2=18.75; re=r1+r2; ch=A; printf(%d %c %d %o %f %c %d,num1,num1,num2,num2,re,ch,ch); printf(%sn,Very good); return 0;运行情况:说明:整型变量可以以字符的形式输出,而字符变量也可以整数的形式输出,ASCII码是他们之间的桥梁。负数在计算机内存中是以补码的形式存放。变量num2的值为-3,-3的补码为:11111
17、11111111101用八进制表示即:,所以变量num2以%o的格式输出时,显示。(c)附加格式字符()字 符说 明字母 l,hl用于长整型整数,h用于短整型或无符号短整型整数,可以加在格式字符d,o,x,u前面m(代表一个正整数)数据的输出宽度n(代表一个正整数)对实数,表示输出小数位的位数;对字符串,表示截取的字符个数-输出的数字或字符向左靠齐案例37 printf输出形式举例2#include using namespace std;int main() int num1=123; long num2=; float re=123.4567; printf(%d,%6d,%-6d,%2d
18、n,num1,num1,num1,num1); printf(%ld,%8ld,%4ldn,num2,num2,num2); printf(%f,%10f,%10.2f,%-10.2fn,re,re,re,re); printf(%s,%10.5s,%-10.5sn,student,student,student);运行情况如下:输出项表。输出项表中可以有多个输出项,各项之间用逗号分隔。注:Printf()函数在使用时要注意以下几点:(a)Printf()函数可以输出常量、变量和表达式的值。但格式控制中的格式说明符必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则会出错。(b)类型转换
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 谭浩强第

限制150内