第3章 程序设计初步_第1页
第3章 程序设计初步_第2页
第3章 程序设计初步_第3页
第3章 程序设计初步_第4页
第3章 程序设计初步_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、13.1 面向过程的程序设计和算法面向过程的程序设计和算法1. 算法算法 为解决特定问题而采取的确定的有限步骤。为解决特定问题而采取的确定的有限步骤。 编制计算机的各种操作步骤的过程为算法设计。编制计算机的各种操作步骤的过程为算法设计。2. 流程图流程图 用用图形图形描述算法,直观形象,易于理解。描述算法,直观形象,易于理解。2 程序开发采取程序开发采取“自顶向下,逐步细化和模块化自顶向下,逐步细化和模块化”的方法。的方法。 即将一个大任务先分成若干个子任务,每个子即将一个大任务先分成若干个子任务,每个子任务就是一个模块(用一个功能相对独立的函数任务就是一个模块(用一个功能相对独立的函数实现)

2、。如果一个子任务还是太复杂,就再分解实现)。如果一个子任务还是太复杂,就再分解为若干个子任务,如此逐层分解,逐步细化。为若干个子任务,如此逐层分解,逐步细化。1. C+程序的组成:若干个程序文件程序的组成:若干个程序文件2. 程序文件:预处理命令、声明部分、函数程序文件:预处理命令、声明部分、函数3. 函数的构成函数的构成:函数首部、函数体函数首部、函数体4. 语句:声明语句语句:声明语句 执行语句(流程控制语句、函数和执行语句(流程控制语句、函数和流对象调用语句、表达式语句)流对象调用语句、表达式语句) 空语句空语句 复合语句复合语句3 C+中所有输入中所有输入/输出是通过输入输出是通过输入

3、/输出流实现的,要使用输出流实现的,要使用C+提供的输入、提供的输入、输出时,必须在程序的开头增加二行:输出时,必须在程序的开头增加二行: #include using namespace std;3.4.1 输入输入1. 输入十进制整数和实数输入十进制整数和实数2. 输入字符数据输入字符数据3. 输入十六进制和八进制数据输入十六进制和八进制数据13:20:47练习练习以以0X(大小写均可)打头,由数字(大小写均可)打头,由数字0 9和字母和字母A F(大小写均可)组成,表示一个十六进制数(大小写均可)组成,表示一个十六进制数以以0打头,由数字打头,由数字0 7组成,组成,表示一个八进制数表示

4、一个八进制数提取运算符 以字母或下划线开始的字母、数字及下划线组成 1. 1. 输入时数据之间可以用一个或多个空格隔开,或用回车输入时数据之间可以用一个或多个空格隔开,或用回车作分隔作分隔 2. 2. 从键盘上输入数据的个数、类型及顺序,必须与从键盘上输入数据的个数、类型及顺序,必须与cin中中列举的变量一一对应。列举的变量一一对应。 输入的数据必须是字符型数据,各数据间以空格输入的数据必须是字符型数据,各数据间以空格或回车分隔或回车分隔 空格和回车键不能作为输入字符赋给字符型变量空格和回车键不能作为输入字符赋给字符型变量 一次只能从输入行中提取一个字符一次只能从输入行中提取一个字符( (包括

5、空格、回包括空格、回车键车键) ) 数据进制类型:数据进制类型:hex 为十六进制为十六进制oct 为八进制为八进制dec为十进制为十进制 只能是整型变量 1. 1. 当在当在cin中指明使用的数制输入后,则所指明的数制一直中指明使用的数制输入后,则所指明的数制一直有效,直到重新指定为止有效,直到重新指定为止2. 2. 输入数据的格式、个数和类型必须与输入数据的格式、个数和类型必须与cin中所列举的变量中所列举的变量类型一一对应类型一一对应设有语句:char c1,c2,c3; cinc1c2c3;当执行以上两个语句时1. 输入:a b c则c1,c2,c3的值分别是 a a b c设有语句:

6、int a,b,c; cinhexaoctbdecc;当执行以上两个语句时,输入:123 123 123后,a,b,c的值分别是291 83 123十进制2. 输入abcdef3.4.2 输出输出1. 输出字符数据输出字符数据2. 输出十进制整数和实数输出十进制整数和实数3. 输出十六进制和八进制数据和用科学表示输出十六进制和八进制数据和用科学表示法输出实数法输出实数练习练习 插入运算符 先计算表达式的值,将其结果输出 表达式若为字符串,则按原样输出。表达式若为字符串,则按原样输出。 使用转义字符,用使用转义字符,用cout可输出任一可输出任一ASCII码的字符。码的字符。 常用的有:常用的有

7、:t n n(endlendl) ) 为了区分输出的数据项,在各输出数据之间要隔开。为了区分输出的数据项,在各输出数据之间要隔开。方法一:在输出数据之间加分隔符(可以是空格、制表方法一:在输出数据之间加分隔符(可以是空格、制表符或换行符等)。符或换行符等)。方法二:指定输出项的宽度。方法二:指定输出项的宽度。setw(宽度宽度) 宽度指出紧宽度指出紧跟其后的输出项占用的字符位置个数,并向右对齐跟其后的输出项占用的字符位置个数,并向右对齐 使用使用setw()时注意:时注意:1在程序的开头增加:在程序的开头增加:#include 2括号中必须是一个表达式,值为正整数括号中必须是一个表达式,值为正

8、整数3仅对其后的一个输出项有效仅对其后的一个输出项有效对整型数的输出对整型数的输出 可以指定数制类型(可以指定数制类型(hex、oct、dec),类似于输入),类似于输入对实型数的输出对实型数的输出 可以指定输出方式(可以指定输出方式( fixed 、scientific ) /指定按定点数格式输出(缺省)指定按定点数格式输出(缺省) cout.setf(ios:fixed,ios:floatfield); /指定按科学表示法格式输出指定按科学表示法格式输出 cout.setf(ios:scientific,ios:floatfield); 科学表科学表示法示法定点表示定点表示指定的语句为:指

9、定的语句为:执行以下两个语句执行以下两个语句cout3+ata+2n;coutan;输出结果为:输出结果为:执行以下语句执行以下语句float x=3.1415,y;int a,b;a=y=b=x;coutatb tx ty n;输出结果为:输出结果为:3 3 3.14 3int x,y,z;x=y=z=256;coutxtoct ythexzn;256 400 100100 99a习题讲解习题讲解153.5 顺序结构程序设计顺序结构程序设计常用的一种程序结构,特点是程序按语句常用的一种程序结构,特点是程序按语句从上到下的排列顺序依次执行,每条语句从上到下的排列顺序依次执行,每条语句只能执行一

10、次,没有执行不到或执行多次只能执行一次,没有执行不到或执行多次的语句。的语句。16例:已知一个圆柱体的半径为例:已知一个圆柱体的半径为6,高为,高为7,求圆柱体,求圆柱体的体积。的体积。173.7 选择结构选择结构在实际解决问题只凭顺序结构不够,还需要选择在实际解决问题只凭顺序结构不够,还需要选择结构来决定在不同的条件下执行不同的语句。结构来决定在不同的条件下执行不同的语句。特点是:程序的流程是由多条支路构成的,在程特点是:程序的流程是由多条支路构成的,在程序的一次执行过程中,根据不同的情况,只有一序的一次执行过程中,根据不同的情况,只有一条支路被选中执行,而其它支路上的语句被直接条支路被选中

11、执行,而其它支路上的语句被直接跳过。跳过。实现选择结构的有实现选择结构的有 if 语句和语句和 switch 语句。语句。183.7.1 if 语句语句1. 最基本的最基本的if语句语句if (表达式表达式) 语句;语句;if (表达式表达式) 语句语句1; 语句语句2; 复复合合语语句句19例:根据用户输入的实数,求出其绝对值并输出。例:根据用户输入的实数,求出其绝对值并输出。#include using namespace std;int main( ) float x, y; coutx; if (x0) x=-x; cout ” |x|=”xendl; return 0;203.7.2

12、 if else 语句语句 最基本的最基本的if语句只能表达语句只能表达“如果如果那么那么”的含的含义。而义。而 if else 语句却能表达语句却能表达“如果如果那么那么否则否则”的含义。的含义。if (表达式表达式) 语句语句1;else 语句语句2;可以是单语句,也可以是由多条语句组成的复合语句21例:对用户输入的两个整数比较其大小。例:对用户输入的两个整数比较其大小。 #include using namespace std;int main(void) int a, b; coutab; if (ab) cout”a大于大于b”endl; else cout”a可能比可能比b小小”e

13、ndl; cout”a也可能等于也可能等于b”endl; return 0; 复合语句要复合语句要用用 括起括起缩进缩进223.7.3 if else if 语句语句 实际应用中我们可能面临更多种选择,可以将实际应用中我们可能面临更多种选择,可以将ifelse 语句扩展。语句扩展。if (表达式表达式1) 语句语句1;else if (表达式表达式2) 语句语句2; else if (表达式表达式3) 语句语句3; else 语句语句4;23例:编程求下列函数的值:例:编程求下列函数的值: 5 5x x 2 25 5x x0 0 1 10 0 x x 0 05 5x x0 0 1 15 5x

14、x 2 2f f( (x x) )24 #include using namespace std;int main(void) int x, y; coutx; if (x5) y=2; else if (x0) y=1; else if (x = = 0) y=0; else if (x=-5) y=-1; else y=-2; cout”f(x)=”yendl; return 0;等于判断等于判断书书写写格格式式自自由由253.7.4 if 语句的嵌套语句的嵌套 在在 if 语句中又包含一个或多个语句中又包含一个或多个 if 语句的情况称为语句的情况称为“if 语句的嵌套语句的嵌套” 。i

15、f (表达式表达式1) if (表达式表达式2) 语句语句1; else 语句语句2; else if (表达式表达式3) 语句语句3; else 语句语句4;if (表达式表达式1) if (表达式表达式2) 语句语句1; else if (表达式表达式3) 语句语句3; else 语句语句4;注注意意ifelse的的配配套套规规则则if (表达式表达式1) if (表达式表达式2) 语句语句1; else if (表达式表达式3) 语句语句3; else 语句语句4;263.7.5 switch语句语句switch语句又称开关语句,是语句又称开关语句,是C+的另一种分支方法的另一种分支方法

16、 switch (表达式表达式) case 常量表达式常量表达式 1: 语句序列语句序列1; break; case 常量表达式常量表达式 2: 语句序列语句序列2; break; case 常量表达式常量表达式 n: 语句序列语句序列n; break; default: 语句序列语句序列0;表达式的结果必表达式的结果必须是整型、字符须是整型、字符型或枚举类型型或枚举类型常量表达式的值常量表达式的值必须是整型、字必须是整型、字符型或枚举类型符型或枚举类型的常量,不能是的常量,不能是变量表达式变量表达式27例:例:设计一个程序将从键盘上输入的百分制成绩转换成设计一个程序将从键盘上输入的百分制成绩

17、转换成对应的五分制成绩并输出,对应的五分制成绩并输出,90分以上为分以上为A,8089分为分为B,7079分为分为C,6069分为分为D,60分以下为分以下为E,分,分别由条件语句和开关语句实现。别由条件语句和开关语句实现。 28用条件语句实现:用条件语句实现:# include using namespace std;int main(void) int s; cout s; if (s0) cout=90) cout =80) cout =70) cout =60) cout ”五分制分数为五分制分数为Dn”; else cout ”五分制分数为五分制分数为En”; return 0;29

18、# include using namespace std;int main(void) int s; char score; cout s; if(s0) cout ” error!n ” ; else switch (s/10) case 10 : case 9 : score=A; break; case 8 : score=B ; break; case 7 : score=C ; break; case 6 : score=D ; break; default : score=E ; break; cout”五分制分数为:五分制分数为:”score3 y=5; D. C. if x3

19、 y=5; D. if(xif(x3) y=5 else y=-5;3) y=5 else y=-5;B设变量设变量a,ba,b是整型变量,下列语句中,语法正确的是是整型变量,下列语句中,语法正确的是 A. switch( a ) A. switch( a ) B. switch( B. switch( a+ba+b ) ) case a: a+ ;break; case a: a+ ;break; case 1:b= case 1:b=a+;breaka+;break; ; case b: b+; break; case b: b+; break; case 1:a= +b; case 1:

20、a= +b; C. switch( aC. switch( a* *a )a ) D. switch(a/10 + b) D. switch(a/10 + b) case 3 , 4 : +a; case 3 , 4 : +a; case case 2 2:b=a/10; break;:b=a/10; break; case 5 , 6 : +b; case 5 , 6 : +b; default: a+= b; default: a+= b; D313.11 循环结构循环结构1*2+2*3+3*4 = ?int s;s=1*2+2*3+3*4;1*2+2*3+3*4+100*101= ? 使

21、用循环结构可以简化程序中大量的重复使用循环结构可以简化程序中大量的重复操作。操作。 循环结构是由循环结构是由 while 语句,语句,dowhile 语句语句和和 for 语句来实现,为了更方便地控制程序流语句来实现,为了更方便地控制程序流程,程,C+语言还提供了两个循环辅助语句语言还提供了两个循环辅助语句 break 和和 continue 。32循环体循环体3.11.1 while 语句语句例:例:1*2+2*3+3*4+100*101= ?while (表达式表达式) 语句;语句;#includeusing namespace std;int main( ) int n=1, s=0;

22、while(n=100) 循环循环控制控制变量变量循环条循环条件件表达式的值非0或条件成立333.11.2 dowhile 语句语句while语句语句表达的是表达的是“当满足条件时一直做某事当满足条件时一直做某事”。do 语句;语句; while (表达式表达式) ;dowhile语句语句表达的是表达的是“一直做某事直到不满足一直做某事直到不满足条件为止条件为止”。有分号!有分号!34例:求键盘输入的例:求键盘输入的50个整数中正数之积和负数之和并个整数中正数之积和负数之和并分别输出。分别输出。#include int n=1, a, s1=1, s2=0; while(n=50) ”#inc

23、lude int n=1, a, s1=1, s2=0; do while(n=50); ” s1,s2的初值为什么不同?的初值为什么不同?353.11.3 for 语句语句 要正确实现循环应注意要正确实现循环应注意三个方面的问题:三个方面的问题:控制控制变量的初始化变量的初始化、循环条循环条件件和和控制变量的值的更控制变量的值的更新新。for语句在书写形式语句在书写形式上正好体现了这种紧密上正好体现了这种紧密的逻辑关系。的逻辑关系。for (表达式表达式1;表达式;表达式2;表达式;表达式3) 语句;语句;控制变量的初始控制变量的初始化化循环条件循环条件控制变量的控制变量的值的更新值的更新3

24、6例:例:1*2+2*3+3*4+100*101= ?while 语句;语句;#include int n=1, s=0; while(n=100) cout”s=”sendl; for 语句;语句;#include for(int n=1, s=0; n=100;n=n+1) cout”s=”sendl; 37关于关于for语句的一些说明:语句的一些说明:for (表达式表达式1;表达式;表达式2;表达式;表达式3) 语句;语句;表达式表达式1只执行一次只执行一次表达式表达式2在每次准备在每次准备 循环前执行循环前执行表达式表达式3在每次循环在每次循环 后执行后执行各表达式均可省略各表达式均

25、可省略表达式表达式2省略表示循省略表示循 环条件成立环条件成立383.12 循环嵌套循环嵌套一个循环的循环体包含另一个循环,为循环嵌套一个循环的循环体包含另一个循环,为循环嵌套例:打印例:打印8行行7列的星号矩形列的星号矩形#includeusing namespace std;int main( ) for( int i=0; i8; i+) for( int k=0; k+) cout”*”; coutendl; return 0;如果改为如果改为k=i 呢呢 ?39循环次数可以是确定的;也可以是不确定的循环次数可以是确定的;也可以是不确定的例:不断从键盘例:不断从键盘输入若干个整数,输入

26、若干个整数,直到输入整数直到输入整数0为止,求所有输为止,求所有输入整数的平均值。入整数的平均值。#include int a, n=0; float s=0; couta; for( ; a!=0 ; n+) s=s+a; couta; if (n) s=s/n; cout”s=”sendl; return 0;a的值决定了的值决定了是否继续输入是否继续输入403.13 continue 和和 break 语句语句 有时需要在循环体中提前开始下一轮循环或有时需要在循环体中提前开始下一轮循环或中断循环,就要用到中断循环,就要用到continue 和和 break 语句。语句。例:将例:将100

27、200之间不能被整除的整数输出。之间不能被整除的整数输出。#includeusing namespace std;int main( ) for( int n=100; n=200; n+) if (n%3 = = 0) coutnendl; return 0; 结束本次结束本次循环体的执循环体的执行行41例:打印半径为整数例:打印半径为整数120的所有圆的面积,如的所有圆的面积,如果面积超过果面积超过100则不打印。则不打印。#includeusing namespace std;int main( ) int r; float area, pi=3.14159; for( r=1; r100) cout”r=”rt”area=”areaendl; return 0;switch语句语句中也有中也有break!42for( int i=0; i=5; i+) for( int j=0; j=5; j+) if (j/2!=0) couti , jendl; 下列程序输出是下列程序输出是什么?什么?for( int i=1; i=5; i+) fo

温馨提示

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

评论

0/150

提交评论