《程序控制语句》PPT课件.ppt

上传人:sh****n 文档编号:14176363 上传时间:2020-07-09 格式:PPT 页数:48 大小:381KB
收藏 版权申诉 举报 下载
《程序控制语句》PPT课件.ppt_第1页
第1页 / 共48页
《程序控制语句》PPT课件.ppt_第2页
第2页 / 共48页
《程序控制语句》PPT课件.ppt_第3页
第3页 / 共48页
资源描述:

《《程序控制语句》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序控制语句》PPT课件.ppt(48页珍藏版)》请在装配图网上搜索。

1、第三章 程序控制语句,目录,3.1 c语句概述 3.2 格式输入输出 3.3 字符数据的输入输出 3.4 顺序结构程序设计举例 3.5 选择结构程序设计 3.6 循环控制结构程序设计,3.1 C语句概述,1. 控制语句( 9种) : 完成一定的控制功能 if ( ) else 条件语句( 双分支选择语句) switch 多分支选择语句 for ( ) while ( ) 循环语句 do while ( ) continue 结束本次循环语句 break 中止语句 goto 转向语句 return 从函数返回语句,2. 函数调用语句 : 由一个函数调用加一个分号构成 如: printf(“ver

2、y good!”);,3. 表达式语句 : 由表达式加分号构成 如: x=12 ; ( 赋值表达式语句 ),3. 空语句 : 由一个分号构成 , 它什么也不做 ;,复合语句 : 用 括起来的语句序列 如 int temp ; temp = x ; x = y ; y = temp ; ,注意 : 1. 复合语句是一个整体, 相当于一条语句 2. 一个复合语句中可以包含其他的复合语句 3. 在复合语句的花括号后不要再加分号 3. 复合语句中可定义变量 , 但此变量只在 该复合语句内有效,3.2 格式输入输出函数,一、 printf函数 格式: printf ( 格式控制, 输出表列 ) ; 如:

3、 printf(“a=%dn” , a) ;,1. 格式控制: 用“ ” 括起来的字符串 , 包括如下两个部分 (1) 普通字符( 包括转义字符) : 需要原样输出的字符 (2) 格式说明: 由%和格式字符组成 其作用是将输出数据按指定的格式输出,C语言没有提供专门的输入/输出语句,其输入输出操作是 由函数实现的。C语言提供的函数以库的形式存在,这些库 函数定义在头文件stdio.h中。因此在程序中如果用到输入输 出函数,需在程序的头部包含该头文件。,#include #include “stdio.h”,% 格式字符 l m.n 0 - 格式字符 : 指定输出项的数据类型和输出格式 c d

4、f s 长度修正符 : l 对长整型和double型 域宽及精度描述符 m.n ( m控制域宽, n 控制小数位数 ) 数0用以在指定数字前的空位是否用0填补(对整型,实型可用) 负号用以指定输出项是否为左对齐方式,2. 输出列表 : 输出项可以是常量, 变量, 表达式,例: int x=8, y=-2;float a=3.14; printf(“%dn”, 25); printf(“%03dn”, x); printf(“%3.6fn”, a); printf(“%2.3sn”, “C Language”); printf(“x*y=%dn”, x*y); printf(“|y|=%dn”,

5、 fabs(y) );,25 008 3.140000 C L x*y=-16 |y|=2,二、 scanf函数 格式: scanf ( 格式控制 , 变量地址表列 ) ; 1. 地址参数 : 变量的地址可通过地址运算符“ b=O; putchar(a); putchar(b); putchar(Y); ,输出: BOY,注意: putchar函数只有一个参数,二、 字符输入函数( getchar函数) 格式 : getchar( ) ( 注意它是无参函数 ) 功能 : 从键盘输入一个字符,例:#include void main( ) char ch; ch=getchar( ); getc

6、har( ); putchar(ch); putchar(n); putchar(getchar( ) ; ,假设输入: ABCD,输出: A C,注意:一般连续输入可显示字符, 若中间有空格,回车等字符, 在输出时是不可见的,若输入: A BC,若输入: AB,输出: A B,输出: A,3.4 顺序结构程序设计举例,#include void main( ) float a,b,c,s,area; scanf(“%f%f%f”, ,3.5 选择结构程序设计,1.关系运算符和关系表达式 2.逻辑运算符和逻辑表达式 3.if语句 3.switch语句 5.程序举例,1.关系运算符和关系表达式,

7、注意 : (1) 字符数据按其ASCII码值进行比较 (2) 应避免2个实数作 = = 或 != 的比较,一、关系运算符 = = = != 1. 优先级 : 低于纯算术类, 高于赋值类 2. 结合性 : 左结合性,二、关系表达式: 用关系运算符连接起来的式子 关系表达式的值 : 只有2个, 真以 1 表示 , 假以 0 表示,注意: (3) 表达式 5278 是允许的 , 它相当于 (52)7)8 (4) 可以将关系表达式看成是一种整型表达式,2.逻辑运算符和逻辑表达式,一、 逻辑运算符 ! 进行判断时, 非零值代表“真”, 零值代表“假”,例: 表示 x -1,1区间 应写为: x=-1 x

8、 = y = z = 0 ; +x | +y ,(+x) | ( (+y) scanf(“%d%d%d”, ,#include #include void main( ) int x, y; scanf(“%d”, ,#include #include void main( ) int x, y; scanf(“%d”, ,Y=,二、 if 语句的嵌套 : 在if 语句中又包括一个或多个if 语句,规定: 在if 嵌套结构中, else是与其前面最近的尚未配对的if 配对,1. if (表达式1) if (表达式2) 语句,4. if (表达式1) if (表达式2) 语句1 else 语句2

9、,2. if (表达式1) 语句1 else if (表达式2) 语句2,3. if (表达式件1) 语句1 else if (表达式2) 语句2 else 语句3,对第4种形式可以有两种理解方式: (1) if (表达式1) if (表达式2) 语句1 else 语句2 ,(2) if (表达式1) if (表达式2) 语句1 else 语句2,方法1 if (x0) y=-1; else if (x=0) y=0; else y=1;,方法2 if (x=0) if (x0) y=1; else y=0; else y=-1;,方法3 y=-1; if(x!=0) if(x0) y=1;

10、else y=0;,修改方法3 y=-1; if(x!=0) if(x0) y=1; else y=0;,三、 条件运算,例 max=ab? a : b+1 ab? a : cd? c : d,注意: (1) 表达式1, 表达式2和表达式3 的数据类型可以互不相同 (2) 条件表达式的值的数据类型与表达式2, 表达式 3中数 据类型较高的那个保持一致 如 75? 10 : 1.4 条件表达式的值为10.0,ab? a : (cd? c : d ),1. 条件运算符 ? : 优先级仅高于赋值类, 是右结合性,执行过程: 先计算表达式1 , 若其值为非零值(真), 则计算表达式2 的值, 该条件表

11、达式的值即为表达式2 的值; 若表达式1的值为零(假), 则计算表达式3 的值, 该条件表达式的值即为表达式3 的值,2. 条件表达式的一般形式 : 表达式1? 表达式2 : 表达式3,max=(ab? a : b+1),用条件表达式实现 #include void main( ) int max; max=xy? x : y ; max=zmax? z : max; printf(“max=%d”,max); ,当if中的语句为简单赋值语句时,我们可以用条件表达式 来取代if 语句,例 求3个数中的最大数 #include void main( ) int max; if (xy) max=

12、x; else max=y; if (zmax) max=z; printf(“max=%d”,max); ,3.switch语句,一、switch语句的格式 switch ( 表达式 ) case 常量表达式1 : 语句1 case 常量表达式2 : 语句2 : : : case 常量表达式n : 语句n default : 语句n+1 ,注意: 1. 表达式一般多为整型或字符型表达式 2. case后常量表达式的值必须互不相同 3. case和default的出现次序不影响结果 3. 语句1至语句n+1为复合语句时可省略 多个case可以共用一组执行语句 Switch语句可以嵌套,swit

13、ch语句的执行过程 : 计算switch后表达式的值 如果表达式的值与某个case常量表达式的值相等时, 就执行此case后的语句, 执行完后将继续执行下一个case后的语句, 如果表达式的值与所有case常量表达式的值都不同, 就执行default后的语句,例 void main ( ) int x, y ; printf(“input a number:n”); scanf(“%d” , ,如果输入x为 2 则输出: 20 30 0,如果输入x为 6 则输出: 0,注意 : 在执行一个case 分支后, 应用break语句结束switch语句,void main ( ) int x, y

14、; printf(“input a number:n”); scanf(“%d” , ,如果输入x为 2 则输出: 20,3.6 循环控制,1.概述 2. while语句 3. do-while语句 3. for语句 5. 循环的嵌套 6. break语句和continue语句,1.概述,在实际问题中, 我们常常遇到需要重复处理的工作 例如: 求1100的和 , 或求一个班英语成绩的平均分,一般来说循环控制方法分两种: (1) 条件循环 ( while循环 和 do while 循环 ) 条件满足时执行循环, 条件不满足时结束循环,(2) 计数循环 ( for 循环 ) 先确定循环次数, 然后

15、执行循环, 完成循环次数后结束,注: C语言中的for循环非常灵活, 功能强大, 也可以实现 循环次数不确定的情况, 完全可以代替while循环,2.while语句,2. 执行过程 : 先计算表达式的值, 值为真(非零)时执行循环体, 值为假时结束循环,1. 格式 : while (表达式) 循环体语句,3. 注意 : (1) 表达式必须用( ) 括起来 (2) 循环体语句为复合语句时, 必须用 把它们括起来 (3) 循环体语句中必须有使循环趋向结束的语句,例: 求1100 的和,#include void main ( ) int i , sum; sum=0; i=1; while (i=

16、100) sum=sum+i; i+; printf(“sum=%dn”, sum); ,分析: 输入, 输出分别是什么? 需要几个变量? 程序大体可分为几个步骤?,例: 求1n 的和, n为任意正整数,#include void main ( ) int i , sum , n ; sum=0; i=1; printf(“Input value n:n”); scanf(“%d”, ,例: 求某个班英语成绩的平均分, 该班学生人数和每个 学生的成绩由键盘输入,#include void main ( ) int i , n ; float s , sum , ave ; sum=0; i=1

17、; printf(“Input the student number: ”); scanf(“%d”, ,例: 编程求 的近似值, 公式 /4 1-1/3+1/5-1/7+1/9-,分析: 题目仍可以看成是累加求和 不同的是, 相加的每一项正负相间, 公式是无穷的, 所以我们规定当 相加项的绝对值小于0.000001 (即106 )时停止计算,#include #include void main( ) int s; float n , t , pi ; s=1 ; n=1; t=1; pi=0; while ( fabs(t)1e-6 ) pi=pi+t ; n=n+2; s=-s; t=s

18、/n; pi=4*pi ; printf(“ pi=%10.6fn”, pi ); ,1,1,-1,3,-1/3,1,0,1,0.67,1/5,5,1,3.do-while语句,1. 格式 : do 循环体语句 while (表达式) ;,2. 执行过程 : 先执行循环体, 然后计算表达式的值, 若值为真则重复执行循环体, 若值为假则结束循环,3. 注意 : (1) 表达式必须用( ) 括起来 (2) 循环体语句为多条语句时, 必须用 把它们括起来 (3) 循环体语句中必须有使循环趋向结束的语句,例: 求1100 的和,#include void main ( ) int i , sum; s

19、um=0; i=1; do sum=sum+i; i+; while (i=100) ; printf(“sum=%dn”, sum); ,3. while循环和do-while循环的比较,while do-while (1)先判断条件再执行循环体 先执行循环体再判断条件 (2)循环体可能一次也不执行 至少执行一次循环体,#include void mian( ) int sum=0 , i ; scanf(“%d”, ,#include void mian( ) int sum=0 , i ; scanf(“%d”, ,3.for语句,1. 格式 : for (表达式1 ; 表达式2 ; 表

20、达式3) 循环体语句,2. 执行过程: (1) 计算表达式1 (2) 计算表达式2, 若值为真则执行循环体, 再执行第(3)步; 若值为假则结束循环 (3) 计算表达式3, 再重复执行第(2)步,sum=0; i=1; while ( i=100 ) sum=sum+i ; i+ ; ,sum=0; for( i=1 ; i=100 ; i+) sum=sum+i ;,例 : 将1100求和的while循环转换为用for循环实现,3. 说明 (1) 可以省略表达式1 sum = 0 ; for ( i=1 ; i=100 ; i+ ) sum = sum+i ;,i=1;,(2) 可以省略表达

21、式3 sum = 0 ; for ( i=1 ; i=100 ; i+ ) sum = sum+i ;,i+ ;,(3) 同时省略表达式1和表达式3 sum = 0 ; i=1 ; for ( ; i=100 ; ) sum = sum+i ; i+ ; ,(4) 表达式1 , 表达式3还可以是逗号表达式 for ( sum = 0 , i = 1 ; i=100 ; sum = sum+i , i+ ) ;,(5) 表达式1 , 表达式3 可以是与循环控制无关的其他表达式 i=1 ; for( sum=0 ; i=100 ; sum=sum+i ) i+ ;,空语句,(6) 表达式2一般不会

22、省略, 若省略表达式2循环将不能停止,sum = 0 ; for ( i=1 ; ; i+ ) sum = sum+i ;,sum = 0 ; i=1; for ( ; ; ) sum = sum+i ; i+ ; ,i=1; while(1) sum=sum+i ; i+; ,例: 求某个班英语成绩的平均分,#include void main ( ) int i , n ; float s , sum , ave ; sum=0; i=1; scanf(“%d”, ,#include void main ( ) int i , n ; float s , sum , ave ; sum=0

23、; scanf(“%d”, ,例: 求Fibonacci数列的前20 个数 Fibonacci数列: 1 , 1 , 2 , 3 , 5 , 8 , 13 ,#include void main( ) int i , f1 , f2 , f3; f1=1; f2=1; printf(“%8d%8d”, f1 , f2); for ( i=3 ; i=20 ; i+ ) f3=f1+f2; f1=f2; f2=f3; printf(“%8d”, f3); if ( i%4=0) putchar(n); ,分析数列的规律: 从第3个数开始, 每个数是 其前两个数之和,f3,1,1,2,2,3,1,

24、2,3,5,+,5.循环的嵌套,1. 循环的嵌套: 一个循环体内包含另一个完整的循环结构,2. 按循环嵌套的层数分别称为二重循环, 三重循环,3. C语言中while, dowhile, for循环可以互相嵌套,#include void main( ) printf(“*n”); printf(“*n”); printf(“*n”); printf(“*n”); ,#include void main( ) int i=1; while(i=4) printf(“*n”); i+; ,#include void main( ) int i , j ; i=1; while (i=4) j=1

25、; while( j=3 ) putchar(*); j+; putchar(n); i+; ,#include void main( ) int i , j ; i=1; while (i=4) for (j=1; j=3;j+) putchar(*); putchar(n); i+; ,注意: 内外层循环的控制变量不能重名, 但并列循环的控制变量无此限制,#include void main( ) int i , j ; for( i=1; i=4; i+) for (j=1; j=3; j+) putchar(*); putchar(n); ,特点: 第n行有n个星号,#include

26、void main( ) int i , j ; for( i=1; i=4; i+) for (j=1; j=i; j+) putchar(*); putchar(n); ,例: 输出如图所示的菱形,* * * * * * *,分析: 将图形分为上下 两个部分分别输出 上半部分(前4行) 每行的星号个数是1,3,5,7, 每行的空格个数是3,2,1,0,#include void main( ) int i, j, k ; for ( i=1; i=1 ; i-) for ( j=1; j=4-i ; j+) putchar( ); for ( k=1; k=2*i-1 ; k+) putchar(*); putchar(n); ,6.break语句和continue语句,1. break语句 : 中止循环或switch结构 2. continue语句 : 结束本次循环, 然后再根据是否满足 条件来决定是否执行下次循环,for(r =1 ;r 100 ,for(r =1 ;r 100 ,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!