C语言第3节流程控制
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要点 有分号
语句是一条语句,可以是复合语句,循环体若 为多条语句,可采用复合语句方式
逻辑上是一条语句
和while语句的差别和联系
2020/9/3
C语言程序设计
3.3.2 do-while语句
第3章 流程控制
示例 循环接收输入字符,统计其中英文字母、空格、数字 字符和其他字符的个数。循环直到输入Esc键为止 (ASCII码值为27),并将其计算在其他字符内。
循环体:被重复执行的代码
求积?
PI = PI + s * 1.0 / n;
n = n + 2;
s = -s;
输出结果:4*PI
2020/9/3
C语言程序设计
3.3.1 while语句
第3章 流程控制
示例 编写程序计算两个正整数的最大公约数。
算法 辗转相除法:(求u和v的最大公约数) (1)判断若v=0,则u为最大公约数,否则转(2)
2020/9/3
C语言程序设计
3.3.3 for语句
第3章 流程控制
2 省略表达式 示例 计算1到100的和的另一种方法
int k = 1,s = 0; for(;k<=100;) {
s += k; k++; } printf(“%d”,s);
三个表达式都可 以省略!
提问 省略表达式2怎么跳出循环?
else
语句2
(1)计算表达式的值; (2)若表达式的值为真(≠0),执行语句1,否 则,执行语句2。
要点 无分号
语句是一条语句,可以是复合语句,选择体若 为多条语句,可采用复合语句方式
if-else语句逻辑上是一条语句
2020/9/3
C语言程序设计
3.3 循环结构
第3章 流程控制
#include<stdio.h>
s += i; printf(“%d”,s);
C语言程序设计
3.3.3 for语句
1 多循环控制变量
第3章 流程控制
示例 计算1到100的和的另一种方法
int s = 0,bg,ed; for(bg=1,ed=100;bg<=ed;bg++,ed--)
s += bg + ed; printf(“%d”,s);
(1)计算表达式的值; (2)若表达式的值为真(≠0),执行其后的选择 体语句,语句结束;若为假(0),语句结束。
要点 无分号 语句是一条语句,可以是复合语句,选择体若 为多条语句,可采用复合语句方式
if语句逻辑上是一条语句
2020/9/3
C语言程序设计
3.1
2020/9/3
C语言程序设计
3.3.3 for语句
语法
for(表达式1;表达式2;表达式3) 语句
第3章 流程控制
分析 (1)数据初始化
表达式1
(2)循环控制条件
表达式2
(3)修改循环控制变量 表达式3
等价 表达式1; while(表达式2)
{ 语句 表达式3;
}
2020/9/3
int i,s = 0; for(i=1;i<=100;i++)
2020/9/3
C语言程序设计
3.3.3 for语句
2 省略表达式
习题
第3章 流程控制
在下述语句中,不是无限循环或有语法错误的语句是 C 。
A int k= l;while(k=2)printf(”%d",k); B.for(;;)putchar(’x’); C.char cx;while()cx=getchar(); D.for(;2.5;);
void main( )
{
int i=0, s = 0;
while( 循i<环=控10制0条件 ) {循环体
s += i; 被多次执行
i++;
的代码
}
printf(“%d”,s);
}
2020/9/3
表达式 由‘真’到‘假’
循环控制变量
要点
三个概念:循环体、 循环控制条件、循环 控制变量
C语言程序设计
2020/9/3
C语言程序设计
3.3.4 循环示例
第3章 流程控制
1 单层循环 示例1 在显示器上输出1个‘*’号
putchar(‘*’);
示例2 在显示器上输出n个‘*’号
不循环 用循环
int i,n; scanf(“%d”,&n); for(i=1;i<=n;i++)
putchar(‘*’);
3.3.1 while语句
语法
while(表达式) 语句
第3章 流程控制
(1)计算表达式的值; (2)若表达式的值为真(≠0),执行其后的循环 体语句,然后转(1);若为假(0),语句结束。
要点 无分号
语句是一条语句,可以是复合语句,循环体若 为多条语句,可采用复合语句方式
while语句逻辑上是一条语句
分析 将循环结束标志统计在内,用do-while循环
循环控制条件:ch!=27
循环体:被重复执行的代码 (1)循环输入字符 ch = getche(); (2)判断字符的种类:if-else阶梯结构
2020/9/3
C语言程序设计
3.3.2 do-while语句
第3章 流程控制
(1)定义变量 char ch; 分析 int EngNum=0,DigNum=0,SpaNum=0,OthNum=0;
#include<stdio.h> void main( ) {
int a; scanf(“%d”,&a) if( 选a择>条=件0 ) {
p选r择in体tf(“%d”,a); } }
2020/9/3
要点
二个概念:选择体、 选择条件
C语言程序设计
3.2 选择结构
第3章 流程控制
语法
if(表达式) 语句
for(i=1;i<=m;i++) {
for(j=1;j<=n;j++)
putchar(‘*’);
}
执行多次, 作循环体
外层执行1次,内层执行多次
C语言程序设计
3.3.4 循环示例
2 双层循环 示例2 在显示器上输出下面图形
* *** ***** ******* ***** ***
*
2020/9/3
do {
ch = getche(); if(ch>=‘A’&&ch<=‘Z’||ch>=‘a’&&ch<=‘z’)
EngNum++;
else
if(ch>=‘0’||ch<=‘9’) DigNum++;
else
if(ch==‘ ‘) SpaNum++;
else OthNum++;
}while(ch!=27); (3)输出结果
2020/9/3
C语言程序设计
3.4 流程转向语句
3 goto语句 语法 goto 标号;
示例 int k=1,sum=0; Label1: sum十= k十十; if(k<=100) goto Label1;
printf(”%d”,sum);
第3章 流程控制
2020/9/3
C语言程序设计
3.4 流程转向语句
2020/9/3
C语言程序设计
3.3.4 循环示例
第3章 流程控制
2 双层循环 示例1 在显示器上输出m行n列个‘*’号
分析 (1)输出1行n个‘*’号用循环,见上例 (2)输出m行,循环m次,循环体为(1)代码段
强调
2020/9/3
int i,j,m,n; scanf(“%d,%d”,&m,&n);
4 exit函数 语法 exit(表达式);
示例 exit(0); exit(l);
第3章 流程控制
2020/9/3
C语言程序设计
3.5 应用举例
第3章 流程控制
#include<stdio.h> void main() { char t=’A’;int k= 0;
do { switch (cx++)
2020/9/3
C语言程序设计
3.4 流程转向语句
第3章 流程控制
1 break语句 示例 计算100~200之间的素数输出
代码 f((o21r))(mm判=从1断01整00;0数m到<m2=是020否0之0为;间m素+变数+化) ,做外层循环
{ for(k=2;k<=m-1;k++)
if(m%k==0) break;
if(m==k)
加标志跳出 外层循环
printf(“%d ”,m);
}
2020/9/3
C语言程序设计
3.4 流程转向语句
2 continue语句 语法 continue;
第3章 流程控制
应用 循环结构,结束本次循环,从下次循环开始
要点 循环体内和选择结构联合使用,否则循环无意义
示例 for(k=1;k<=100; k++) { if(k%3 ==0 || k%5==0) continue; printf(”%4d”,k); }
{ case ’A’:k++ ;break; case ’B’:k--; case ’C’:k+=2;break; case ’D’:k%=2;continue case ’E’:k*=10; break; default:k/=3;
} k++ ; }while(cx<’G’); 2020/9/3 printf(”k= %d,k);
}
C语言程序设计
3.5 应用举例
第3章 流程控制
(1)编制程序,从键盘接收一个正的长整数,从低位开始 取出此整数的所有偶数位上的数构成一个新的整数。
(2)从键盘输入一行字符,直到按回车键结束,统计其中 的单词个数。此处认为一个单词是介于空格之间的字符序列。
2020/9/3
C语言程序设计
第3章 流程控制
第3章 流程控制
2020/9/3
软件学院计算机科学与技术教研室 冯海文 fhw19770704@
C语言程序设计
3.1 C语言语句概述
第3章 流程控制
复 合 C语言 语 语句 句
空语句 说明语句 表达式语句
流程控制语句
2020/9/3
C语言程序设计
3.2 选择结构
第3章 流程控制
第3章 流程控制
C语言程序设计
3.3.4 循环示例
示例3
2 双层循环
第3章 流程控制
2020/9/3
C语言程序设计
3.4 流程转向语句
第3章 流程控制
语法 break;
1 break语句
应用 Switch-case语句
以前内容
循环结构
跳出循环
要点 循环体内和选择结构联合使用,否则循环无意义
多重循环只能打破内层结构,见下面示例
2020/9/3
C语言程序设计
3.3.1 while语句
第3章 流程控制
示例 利用下述公式求π的近似值,要求满足计算精度为 0.0001。π/4≈1-1/3+1/5-1/7+1/9-•••
分析 定义变量:和(float PI=0),增长步(int n =
1),符号(int s = 1)
循环控制条件:1.0/n>=0.00常0识1一:般求为和0初值
2020/9/3
C语言程序设计
3.3.3 for语句
第3章 流程控制
3 空语句做循环体 示例1 计算1到100的和的另一种方法
int k,s; for(k=1,s=0;k<=100;s+=k,k++); printf(“%d”,s);
示例2 for(i=1;i<=TIME;i++);
作空计算TIME次; 应用领域:硬件延时
(2)t = u % v;
循环体
u = v;
v = t; 转到(1)
循环控制 条件v!=0
代码 while(v!=0) { t = u % v; u = v; v = t; }
2020/9/3
C语言程序设计
3.3.2 do-while语句
第3章 流程控制
语法
do 语句
while(表达式);
(1)执行循环体 (2)计算表达式的值,若表达式的值为真(≠0), 转(1);若为假(0),语句结束。