第2章 基本编程语句.ppt_第1页
第2章 基本编程语句.ppt_第2页
第2章 基本编程语句.ppt_第3页
第2章 基本编程语句.ppt_第4页
第2章 基本编程语句.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、,3,第2章,基本编程语句 (Basic Programming Statements),语句用来规定程序执行的控制流,在没有跳转或分支的情况下,语句将按照其在程序中出现的次序顺序执行。一条语句以分号“;” 结束。 语句可以是空语句,不产生任何操作。 复合语句也称为块(Block),是指用一对花括号括起来的语句序列。从语法上,复合语句可以被认为是单个语句。例如: if(x9) cout “The number is perfect .n”; cout “It is larger than 9n”; else cout “not larger than 9n”; ,内容提要,2.1 说明语句 2

2、.2 条件语句 3.3 循环语句 3.4 输入输出语句 3.5 转移语句,2.1 说明语句,2.1.1 变量定义(包含 2.1.3 初始化与赋值) 2.1.2 函数声明和定义,.1.1 变量定义(Variable declaration),程序中的变量必须先定义后使用,为变量命名时 应符合标识符的规定。 、变量定义方式 ; int sum; char a, b; float area, width, length;,2 、初始化与赋值 赋值运算符“=”可用于对变量赋值 初始化:变量定义的时候赋值 有初始化的定义与定义之后再赋值形式上不同,效果相同。 例如:,unsignedcolor; /定义

3、 color = 16; /赋初值 unsigned color=16; /定义并赋初值 unsigned color(16); /定义并赋初值 long counter1, counter2=52347; /定义时可部分赋值 注:在C+中,有些变量可以具有默认的值,但为了养成良好的编程习惯,变量在使用之前都要先明确的赋值。,等价,等价,2.1.2 函数声明与定义,C+程序是由函数构成的,由一个主函数和若干个函数构成。 C+程序是函数驱动的。 1、函数声明 函数声明只是声明函数的名称,但若要真正运行,还必须在适当的地方提供该名称的定义。 函数声明包括函数返回值、函数名称和参数列表三部分(以分号

4、结束)。 例如: int area_s(int a ,int b);,2、 函数定义 定义的一般形式: 类型标识符 函数名(形式参数表) 函数体 ,其中: 函数名给自定义的函数取的名字。 形式参数表函数被调用时,接收调用函数传递的实参数。 函数体执行功能的语句块。 函数返回值通过函数调用获得的函数返回值,其值由 return语句返回。,例如: int area_s(int a ,int b) return(a*b); ,3、函数声明与定义的完整例子 f0203.cpp,2.2 条件语句,2.2.1 if语句 2.2.2 条件表达式 2.2.3 switch语句 2.2.4 if 或switch

5、语句,程序通常是由顺序、分支和循环三种控制结构组成的。任何 高级语句都有条件选择控制结构。 C+中if条件选择控制语句(Selection statement)包括: 1、if 语句(Simple selection statement),2.2.1 if语句,if(条件表达式) 语句块 ,2、空语句 if(条件表达式) ;,if(条件表达式) 语句;,或,3、 if else语句(Two-way selection statement) if(条件表达式) 语句1; else 语句2; 例: #include using namespace std; void main ( ) cout p

6、lease input the b key to hear a bell .n; char ch = cin.get( ); if (ch = b) cout a; else if(ch = n) cout what a boring select on n; else cout bye!n; ,4、注意二义性 if语句嵌套时,应注意二义性。 例如: int x = 20; if (x = 0) if (x =0 且 x=0 且 x=50 if else语句配对原则是:else与其紧靠的没有配对的且为 可见的if配对。 如:int x = 20; if ( x = 0) if ( x 50)

7、/该if不可见 cout “ x is okn”; else cout “ x is not okn”;,2.2.2 条件表达式 ? : 为三目运算符 语法形式: (条件表达式)?(条件为真时的表达式) : (条件为假的表达式) 例如: x = a b ? a : b; /将a,b中较小数赋x 事实上,三目运算操作是简单if语句的另一种表达方式。 if (a b) x = a; else x = b;,注意使用圆括号(运算符有优先级关系) cout b ? a : b )y)? ”greater than”:(x = = y)? ”equal to”: ” less than”);,2.2.3

8、 switch语句,Switch语句也称开关语句,是多分支语句,而if语句二分支语句。 该语句实现多选1结构: switch (表达式) case 常量表达式1:语句组1; break; case 常量表达式2:语句组2; break; case 常量表达式n:语句组n; break; default: 语句组n+1; ,特点: (1)表达式只能是整型、字符型或枚举型,不能为浮点型。 (2)当表达式的值与某个case后常量表达式值相同时,执行之。 (3)都不匹配,执行default后的语句。 (4)各个case(包括default)的出现次序可任意,不会影响结果 例如;根据考试成绩的等级输出百

9、分制分数段。 char grade=B; switch(grade) caseA:cout“85-100n”;break; caseB:cout“70-84n”;break; caseC:cout“60-69n”;break; caseD:cout“60n”;break; default:cout“errorn”; /最后可省略break 输出结果为: 70-84,多个case可共用一组执行语句 char grade=B; switch(grade) caseA: caseB: caseC: cout60n”;break; caseD: cout60 Switch可以嵌套,2.2.4 if或s

10、witch语句,if语句与switch语句可以互补。switch只能对确定值进行条件测试,如果是进行范围测试或则浮点值比较,只能用嵌套的if。 例:根据分数输出等级 int grade; / if(grade=85,2.3 循环语句,2.3.1 for循环 2.3.2 while 循环 2.3.3 do-while循环 2.3.4 循环语句举例,2.3.1 for循环,结构: for(表达式1;表达式2;表达式3) 循环体 for 语句的特点是:可用于循环次数能被确定的情况。 可以灵活使用for语句 (1)表达式1可以省略 for(;i=100;i+) /分号不能省略 sum+=i; ,Exp

11、ression1,Expression2,Expression3,Loop body,T,F,i=1;,for(i=1;i=100;i+) Sum+=i;,(2)表达式2可以省略 for (i=1;i+) /等效于for(i=1;1;i+) sum+=i; (3)表达式3可以省略 for(i=1;i=100;) sum+=i+; (4)表达式1和表达式3可以同时省略 i=1; for(;i=100;) sum+=i+; ,if(i100) break;,(5)三个表达式都省略 i=1; for (;) if(i100) break; sum+=i+; (6)表达式1,2,3,可为任意表达式 f

12、or(sum=0,i=1;i=100;i+) /逗号表达式 sum+=i; for(i=0,j=100,k=0;ij;i+,j-) k+=i*j; for(i=1;i=100;sum+=i+); (7)表达式1可以作为循环变量定义 for(int i=1;i=100;i+) sum+=i;,2.3.2 while 循环,结构: while (条件表达式) 循环体,例: i=1; /循环变量初始化 while (i= 10) /循环条件 /循环体 sum=sum+i; i+ ; /改变循环变量的值 可简化为:,while(sum+=i+,i=10 );,Sum+=i+;,2.3.3 do-whi

13、le循环,结构: do 循环体 while(条件表达式) 该语句至少执行一次循环,而while 语句可能一次都不执行。,例: #include using namespace std; void main( ) int i ,sum=0; i=1; do sum=sum+i; i+; while(i=100); coutsum=sumendl; 结果: sum=5050 注:编程时,循环体通常是复合语句,应注意使用花括号。,2.3.4 循环语句举例,例1:字符图形 例2:素数判定,例1:字符图形 用for循环编程画出下列图形: M MM MMM MMMM MMMMM MMMMMM MMMMMM

14、M 程序代码:f0204.cpp,例2:素数判定 给定一个整数m,判断该数是否为素数。 分析: m是素数的条件是m不能被2,3,m-1整除。 实现代码: 方法一:f0207 方法二:f0208,2.5 输入输出语句,2.5.1 标准I/O流 2.5.2 流状态(流控制符) 2.5.3文件流 2.5.4 C语言版输入输出语句(补充),2.5.1 标准I/O流,I/O流是指输入输出的一系列数据流。 cin标准输入 流,cin指标准输入设备键盘 cout 标准输出流,cout指标准输出设备显示器 在程序中使用cin和cout需要使用标准输入输出库,即包含iostream头文件,插入操作符“” 输出使

15、用插入操作符“”从cin输入流中抽取字符。 int myage; cin myage; 又如: int i; float f; long l; cin i f l; cin 能抽取输入变量的类型,i, f, l分别接收输入的整型,浮点型 和长整型。,.5.2流状态(流控制符),当不希望以默认方式输出时,可以使用流控制符对输出状态进行控制。 控制符是在头文件iomanip.h中定义的对象,可直接插入流中。使用控制符时,应在程序的头上加上此头文件。 下面是一些常用的控制字符:,例、设置输出宽度(setw) cout setw(8) 10 endl; 输出结果是: 若数值10和20均按照宽度8输出,

16、则 cout setw(8) 10 setw(8) 20 endl; 输出结果是: 注意:如果一个值的位数大于setw(n)确定的宽度位数,则按原宽度输出 。 float amount = 4.53671; cout setw(4) amount endl; 输出结果是:,_ _ _ _ _ _10,_ _ _ _ _ _ 10_ _ _ _ _ _20,4.53671,例2、输出八进制,十六进制和十进制数 #include #include using namespace std; void main( ) int number=1001; cout “Decimal:” decnumber

17、endl “Hexadecimal:”hexnumberendl “Octal:”octnumberendl “Hexadecimal:”hex uppercasenumberendl; ,Decimal:1001 Hexadecimal:3e9 Octal:1751 Hexadecimal:3E9,输出结果:,例3、用字符填充输出宽度(setfill) #include #include using namespace std; void main( ) coutsetfill(*) setw(2)25endl setw(3)25endl setw(4)25endl; coutsetfill

18、( ); /恢复缺省设置 输出结果:,25 *25 *25,例4、控制左右对齐输出(left,right) 缺省时,I/O流以右对齐格式显示 #include #include using namespace std; void main( ) coutrightsetw(5)1setw(5)2 setw(5)3endl; coutleftsetw(5)1setw(5)2 setw(5)3endl; 输出结果为:,_ _ _ _ 1_ _ _ _ 2_ _ _ _ 3 1_ _ _ _2_ _ _ _ 3,例5 强制显示小数点和符号(showpoint,showpos) #include #i

19、nclude using namespace std; void main( ) cout10.0/5endl; coutshowpoint10.0/5endl; cout10 -20endl; coutshowpos 10 -20endl; coutnoshowpos33endl; 输出为:2 2.00000 10 -20 +10 -20 33,例6、精度(setprecision) #include #include using namespace std; void main( ) double amout=22.0/7; coutamoutendl; coutsetprecision(

20、0)amoutendl setprecision(1)amoutendl setprecision(2)amoutendl setprecision(3)amoutendl setprecision(4)amoutendl;,3.14286,3.14286,3,3.1,3.14,3.143,coutfixed; coutsetprecision(8)amoutendl; coutscientificamout endl; coutsetprecision(6);/还原系统默认设置 ,3.14285714,3.14285714e+000,.5.3 文件流,流是一种设备,一种概念设备。 将流与某个

21、文件捆绑后,对流的操作就是对文件的操作。 打开一个文件,就是将实际的文件名与文件流名对应,程序中只要操作文件流就可以实际地进行文件读写。,中打开文件的方法: ifstream fin(filename, openmode=ios:in); ofstream fout(filename, openmode=ios:out); 注: ifstream和ofstream是类型名,表述输入和输出文件流,需要包含头文件; fin和fout是定义的文件流名称; filename是外部文件名,即需要进行操作的磁盘文件; openmode是打开方式,ifstream的默认打开方式是ios:in,表示输入方式,

22、ofstream的默认打开方式是ios:out,表示输出方式,在打开已经存在的输入文件和新建一个输出文件时可以省略这个参数。 举例:f0211.cpp,2.5.4 C语言版输入输出语句(补充),C语言版输入输出,2.6 转移语句,2.6.1 break语句 2.6.2 continue语句 2.6.3 goto 语句 2.6.4 转移语句举例,2.6.1 break语句,用途: break 语句用于while, dowhile, for语句中,从最近的封闭循环体中跳出。 break语句用于switch语句中,跳出switch语句。 例1:break 用于循环语句中 for(;) for(;) / if(i=1) break; / a=1; / ,/从break跳出至此处,例2: break 用于switch语句中 char grade=B; switch(grade) caseA:cout“85-100n”;break; c

温馨提示

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

评论

0/150

提交评论