ch3 基本控制结构.ppt_第1页
ch3 基本控制结构.ppt_第2页
ch3 基本控制结构.ppt_第3页
ch3 基本控制结构.ppt_第4页
ch3 基本控制结构.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 基本控制结构,ch3 基本控制结构,3.1 C语句的分类 3.2 顺序结构程序设计 3.3 选择结构程序设计 3.4 循环结构程序设计 3.5 使用库和函数 3.6 典型例题,返回,1. 控制语句 二个分支语句(if-else、switch-case) 三个循环语句(for、while、do-while) 四个转移语句(continue、break、goto、return) 2. 函数调用语句 如:printf(“Hello, world!”); 3. 表达式语句 x+y; i+; a=2; a=3*5,40;,3.1 C语句的分类,4. 空语句 ; 5. 复合语句 语句序列 ,返回,

2、3.1 C语句的分类,一、赋值语句 语法:变量=表达式; 语义:计算“=”右边表达式的值,将之赋给“=”左边的变量。 如: b=3; if(a=b)0) t=a; 注意:赋值语句与赋值表达式的区别 二、顺序程序举例,3.2 顺序结构程序设计,例3-1:输入一大写字母,改为小写后输出。 #include main() char c1,c2; scanf(%c, ,3.2 顺序结构程序设计,测试数据及运行结果输入:A输出:A,65 a,97,3.2 顺序结构程序设计,例:输入三角形的三边长,求三角形面积。 分析:设三角形的三边分别为a,b,c 则:面积area2=s(s-a)(s-b)(s-c)

3、其中s=(a+b+c)/2,3.2 顺序结构程序设计,源程序:#include main()float a,b,c,s,area; scanf(“%f,%f,%f”, ,发散:三角形面积的计算,返回,3.3 选择结构程序设计,3.3.1 关系运算符与关系表达式,一、关系运算符: 、! 关系表达式: i=(c=d)、x+ya-b 求值结果:int型,0或1。1为真,0为假 如:设a=3,b=2,c=1 则:d= a b 的值为1 f=abc的值为0;,3.3.1 关系运算符与关系表达式,6种关系运算符的优先级别不同:,程序设计中最好不要对两个浮点数直接进行相等性比较;方法之一如: fabs(a-

4、b)1E-6 关系运算符的结合性是左结合,一、逻辑运算符及其优先次序 一元逻辑运算符:!,右结合 二元逻辑运算符: 则执行(m=ab) 语义:判断表达式的值,为真时执行语句,否则不执行;,如:#include main( ) char ch; ch=getchar(); if(ch=a ,3.3.3 选择结构的实现,语法2:if (表达式) 语句1; else 语句2; 语义:判断表达式的值,为真时执行语句1,否则执行语句2;,3.3.3 选择结构的实现,如:#include main() int a,b; scanf (“%d%d”, ,3.3.3 选择结构的实现,二、if语句嵌套的2种形式

5、 1. if语句嵌套在else子句中 if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else 语句n+1;,3.3.3 选择结构的实现,2. if语句嵌套在if子句中 if (表达式1) if (表达式2) if (表达式3) 语句1; else 语句2; else 语句3; else 语句n+1;,3.3.3 选择结构的实现,例3-6:从键盘上输入字符,判别其分类:控制符、数字、大写字母、小写字母、其他字符。,3.3.3 选择结构的实现,#include “stdio.h” main( ) char c; c=getchar()

6、; if (c=0 ,3.3.3 选择结构的实现,3.3.3 选择结构的实现,说明 (1) if 关键字后的表达式可以是一切类型; 如:if (a=5) 语句; if (b) 语句; (2) if 语句中,条件表达式必须用括号括起来;,3.3.3 选择结构的实现,(3) 满足条件需执行一组语句时,该组语句 必须用 括起来;如: if (a+bc,3.3.3 选择结构的实现,(4) if 语句嵌套时,else 与if的匹配问题;例3-7:有一函数:,请编程,输入x的值,输出相应的y值。,3.3.3 选择结构的实现,main( ) float x,y; scanf(“%f”, ,if (x=0)

7、if (x0) y=1; else y=0; else y=-1;,(5) 可利用条件表达来简化程序设计。 如对于: if (exp!=0) 可用 if (exp)来代替;,3.3.3 选择结构的实现,if(!exp)语句;等价于: if(exp=0) 语句;,三、switch语句,3.3.3 选择结构的实现,语法1:switch(表达式) case C1:S1; case C2:S2; case Cn:Sn; default: Sn+1; 其中:表达式必须放在括号中; C1至Cn 是情况常量; default可缺省。,语义:,3.3.3 选择结构的实现,例:switch(grade) cas

8、e A: printf(“85100n”); case B: printf(“7084n”); case C: printf(“6069n”); case D: printf(“60n”); default: printf (“errorn”); ,3.3.3 选择结构的实现,返回,语法2:switch(表达式) case C1:S1;break; case C2:S2;break; case Cn:Sn;break; default: Sn+1;break; ,3.3.3 选择结构的实现,3.3.3 选择结构的实现,语义:,例:switch(grade) case A: printf(“85

9、100n”); break; case B: printf(“7084n”); break; case C: printf(“6069n”); break; case D: printf(“60n”); break; default: printf (“errorn”); break; ,3.3.3 选择结构的实现,说明: (1)default可省略; (2)C1Cn必须互不相同; (3)语法2中,C1Cn无次序影响; (4)允许多个case共用一个执行语句;如:,3.3.3 选择结构的实现,switch(ch) case 0: case 1: case 2: case 3: case 4:

10、case 5: case 6: case 7: case 8: case 9: digit+; break; case : case t: case n: white+; break; default: character+; ,3.3.3 选择结构的实现,(5) break只能跳出一层,内外层情况常量可相同;如: #include main() int x=1, y=0; switch(x) case 1: switch(y) case 0: printf (*1*n); break; case 1: printf (*2*n); break; case 2: printf (*3*n);

11、getch(); ,3.3.3 选择结构的实现,四、三目条件运算符 1. 条件运算符 ?: 2. 格式 e1?e2:e3 3. 语义:判e1的值,为1时计算e2,否则计 算e3; 如:max=(ab)?a:b 等价于 if (ab) max=a; else max=b;,3.3.3 选择结构的实现,4. 说明: 条件运算符的优先级仅高于“,”与“=”; 只有当if语句的真假均只执行一个赋值语句且是给同一变量赋值时,才能用条件表达式取代; 如:if (ab) max=a; else max=b; 条件表达式可使程序简洁; #,3.3.3 选择结构的实现,返回,问题1:假如全班41人,欲从键盘上输

12、入每人的数学成绩,然后计算出平均成绩; 问题2: 编程计算n!。 重复执行一组语句是程序设计要求的基本功能之一。在C语言中可以用以下语句来实现循环: (1)if 和 goto (2)while (3)do-while (4)for,3.4 循环结构程序设计,语法:while (exp) 循环体语句; 语义:当exp为真时,执行循环体;为假时, 执行循环语句的后续语句; 如:用while语句构成循环,求: sum=1+2+100,3.4.1 while语句,3.4.1 while语句,3.4.1 while语句,源程序: main() int i=1, sum=0; while (i=100)

13、sum+=i; i+; printf(“%d”,sum); ,3.4.1 while语句,说明: 循环体可以用复合语句; 循环控制变量在while前应赋初值,以确保循环的正常开始;,3.4.1 while语句, 循环体内应改变循环控制变量的值,以确保循环正常结束; 如:i=1; while (i=100) sum=sum+1; (死循环),3.4.1 while语句, while 的特点: 先判断后执行 循环体最少执行次数为0; 如: i=3; while (i3) printf(“i=%dn”, i);,语法:do 循环体语句; while (exp); 语义:当exp为真时,执行循环体;为

14、假时, 执行循环语句的后续语句; 如: 用do-while语句构成循环,求 sum=1+2+100,3.4.2 do-while语句,3.4.2 do-while语句,3.4.2 do-while语句,源程序: main() int i=1,sum=0; do sum+=i; i+; while (i=100); printf(“%d”,sum); ,3.4.2 do-while语句,说明: (1)循环体可以用复合语句; (2)循环控制变量在do前必须赋初值; (3)循环体内应改变循环控制变量的值;,(4)do-while 循环的特点 先执行后判断 循环体至少被执行一次; 如:i=3; do

15、sum+= i; i+; while (i10) ; #,3.4.2 do-while语句,语法:for(exp1; exp2; exp3) 循环体语句; 语义: (1) 计算exp1; (2) 求exp2,为真时,执行(3),否则结束循环; (3) 执行循环体中的语句; (4) 执行exp3; (5) 返回(2)。,3.4.3 for语句,3.4.3 for语句,程序: main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(“%d”,sum); ,3.4.3 for语句,说明: (1)显然for循环更简洁,更灵活; (2)循环体可以是复合语

16、句; (3)可同时对多个变量赋初值及修改。如: for(i=0, j=1; jn 循环变量改变) 循环体;,(5)for语句中三个表达式可省: 省exp1;如: i=1; for ( ; i5; i+) printf(“%dn”,i); 等价于 for (i=1; i5; i+) printf(“%dn”,i);,3.4.3 for语句,省exp3;如: for ( i=1; i5) break; ,3.4.3 for语句,三个表达式全省时,如: for (; ; ) 语句; 等价于 while(1)语句; (5)for语句中的循环体可以是空语句;如: int n=0; while (n+ =

17、2); printf(“%d”,n); 结果为:4,3.4.3 for语句,三种循环可互相代替。 while、do-while和 for 循环控制变量之初值; 循环控制之条件; 循环控制变量之修正。 除goto循环外,都能用break跳出循环,用continue结束本次循环。,3.4.4 三种循环语句的选用,三种循环可以互相嵌套 例:打印九九乘法表:,3.4.5 循环结构的嵌套,1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*1=2 2*2=4 2*3=6 2*4=8 2*9=18 9*1=9 9*2=18 9*3=27 9*9=

18、81,main( ) int i, j ; for(i=1; i10;i+) for (j=1; j10; j+) printf(%d*%d=%2d ,i,j,i*j); printf(n); getch(); ,3.4.5 循环结构的嵌套,3.4.6 break语句和continue语句,一、break语句 break只能用在循环语句、switch语句中 功能:强行退出循环或switch语句。 例:for (r=1; r100) break; printf(“%f”,area); ,二、continue语句 只能用在循环语句中 功能:结束本次循环 例:main( ) int n; for (

19、 n=100; n=200; n+) if (n%3= =0) continue; printf (“%d”,n); ,3.4.6 break语句和continue语句,返回,3.5.1 输入输出的概念 3.5.2 输入输出函数,3.5 使用库和函数,一、字符输入函数getchar 语法:getchar ( ); 语义:(从stdio上) 输入一个字符; getchar是一个无参函数; getchar 包含在 stdio.h中 如: #include main() putchar(getchar(); ,3.5.3 字符输入输出函数,3.5.3 字符输入输出函数,二、字符输出函数 putcha

20、r 语法:putchar (c); 语义:(在stdout上)输出一个字符; 如:#include main() putchar(141); putchar(a); putchar(97);,如: #include main( ) char c; while(c=getchar( )!=#) if(c=a,3.5.3 字符输入输出函数,一、格式输入函数 scanf 语法:scanf(格式控制, 地址表列); 格式控制:含三类符号 空白字符:(空格、Tab或、),输入时不必一一对应; 普通字符:(非格式说明符、非空白符、非%),输入时必须一一对应; 格式转换说明符:由%开始后跟: 一约定的字母转

21、换指示符; 一任选的用于指定输入字段宽度的整数w。,3.5.4 格式输入输出函数,3.5.4 格式输入输出函数,地址表列:由若干个地址组成,可以是变量的地址,也可以是字符串中的首地址等。,例1: #include main() int a; float b; char str50; scanf(“%d%f%s”, ,设输入流数据流为: 25 54.32E-1 Nanjing 处理结果为:25a 5.432000b Nanjing str,3.5.4 格式输入输出函数,输入项表的输入对象须是地址量;如: scanf(“%d,%d,%d”,3.5.4 格式输入输出函数,3.5.4 格式输入输出函数,一、格式输出函数printf 语法:printf (格式控制, 输出表列); 语义:按格式控制将输出表列中的数据依次 输出至屏幕上。 格式控制 普通字符和转义字符(原样输出) 格式说明:由%和格式控制符组成 如:%d,%f,%c等;,3.5.4 格式输入输出函数,如:printf(“a=%d, b=%d”,a,b); 若a、b的值分别为2和3, 则输出结果为: a=2, b=3,3.5.4 格式输入输出函数,如果要输出单一的字符%,则需用%,例1: #include main(

温馨提示

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

评论

0/150

提交评论