第3章_C语言程序的流程控制
C语言程序 第三章流程控制
6.输出斐波那契(Fibonacci)数列的前20项。该数列的第1项和第2项为1,从第3项开始,每一项均为其前面2项之各和,即:1,1,2,3,5,8,......。
7.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。问第一天共摘了多少。
第三章流程控制
习题:
1.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
2.求Sn =a+aa+aaa+…aa…a之值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5),n由键盘输入。
3.求 (即求1!+2!+3!+4!+…+20!
4.求 。
10.出x的差的绝对值小于10-5。
(1)设定一个x的初值。
(2)用以上公式求出的下一个值x1
(3)再将x1代入以上公式右侧的xn,求出x的下一个值x2;
如此继续下去,直到前后两次求出的x值(xn和xn+1)满足以下关系:|
9.用二分法求下面方程在(-10,10)之间的根:
11-12-2学期C语言 第3章 C程序的流程控制2
第三章 C程序的流程控制
【例2】用while语句求
n。
n 1
100
用传统流程图和N-S结构流程图表示算法,见图:
第三章 C程序的流程控制
【例2】用while语句求
n。
n 1
100
循环初值
循环变量增值
#include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }
第三章 C程序的流程控制
标号:语句; … ... 注意: goto 语句标号;
标号是一个有效的标识符,标识符加上一个“:”一起出现在函数内
某处, 执行goto语句后,程序将跳转到该标号处并执行其后的语句。
标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。
通常goto语句与if条件语句连用。
第三章C程序的流程控制
例: #include<stdio.h> main( ) { int i; for(i=0;i<10;i++) putchar(‘a’+i); }
例: #include<stdio.h> main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }
3.1.4 for 语 句
C中,for语句使用最为灵活,可完全取代 while 语句。
一般形式为: for(表达式1;表达式2;表达式3) 语句
执行过程:
1)先求解表达式1。
2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然 后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。
C语言_第3章
简单程序的流程一般分为顺序结构、选择结构和循环结 构。其中顺序结构是最基本的控制结构,其包含的语句 是按照书写的顺序执行,且每条语句都将被执行。
程序流程如图3.1所示, #include<stdio.h> 语句按书写顺序执行。 main( ) 先执行A,再执行B。 {int a=10,x=5,y=6;
三、复合语句
用一对花括号,把若干条语句括起来,
就形成了一条复合语句。形式如下:
{[内部数据描述语句]
其中定义的变量是
语句1; …… 语句n;}
复合语句结束的 “}”之后,不需
局部变量,仅在复 合语句中有效。
要再加分号。
花括号中的语句,可以是简单语句、空语句、复合 语句、流程控制语句,所有这些语句括在一起,在 语法上看成是一条语句,执行时顺序执行花括号中 的每条语句。复合语句多用于流程控制语句中。
printf(“\n%d,%d”,a+i,i++);}
四、格式输入函数 格式输入函数一般形式 scanf(“格式控制字符串”,地址列表); 功能:按指定的格式从键盘上把数据输入到指定的 变量之中 。 在scanf语句的格式控制字符串中,有两类字符: 普通字符:必须按原样输入,不能省略; 格式说明部分:由%引导的格式字符串组成。
scanf语句格式说明部分的一般格式为: %[*][width][F|N][h|L]type type是必须的,表示输入后转换的数据类型。
d(D) o(O) x(X) i(I) u(U)
c s f,e,g F,E,G n
%
十进制整数 八进制整数 十六进制整数 自动根据数头分辨十、八、十六进制 无符号十进制整数 单个字符 字符串 实数
第章C语言程序的流程控制
第章C语言程序的流程控制Final approval draft on November 22, 2020第3章C语言程序的流程控制利用计算机进行程序设计时,不仅仅只处理一些简单的数据,在大部分的程序设计里处理的问题还是相当复杂的。
对于那些复杂的程序设计,读者不可能直接就能写出程序的源代码,而是要通过一些具体的设计方法(如用程序流程图)把程序设计思想先写出来,然后根据程序流程图编写代码。
本章将具体介绍进行程序设计时使用的基本方法和C程序的流程控制。
3.1程序设计的基本知识3.1.1程序流程图在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。
1. 传统程序流程图传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。
美国国家标准化协会ANSI 规定了一些常用的流程图符号,现已为世界各国普遍采用。
我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就参照ANSI标准做具体介绍。
标准中各种图示如图所示。
起止框输入输出框判断框处理框或流程线连接点注释框图传统流程图表示法下面对其中一些主要符号作简要说明:(1)起止框是用来标识程序的开始和结束位置的。
规定流程图以起止框开始,以起止框结束。
(2)输入输出框也叫数据框,其中可以注明数据名称、来源、用途或其它的文字说明。
(3)菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。
(4)处理框用矩形表示各种处理功能。
例如,执行一个或一组特定的操作,从而使信息的值、信息的形式或所在位置发生变化。
另外在矩形框内可注明特定处理名称或其简要功能。
(5)流程线用带箭头的直线表示程序的执行顺序。
当流程自左向右或自上向下时流程线可以不带箭头,其它情况应加箭头表示流程。
(6)连接点用小圆圈表示将画在不同地方的流程线连接起来。
下图中有两个以①为标志的连接点,它表示这两个点是互联在一起的,实际它们是同一个点。
第3章程序的流程控制
if (a >= b) //选择语句
int max;
max = a;
max=a>b?a:b;
else
cout << max
max = b; cout << max << endl; }
<< endl;
}
空语句
根据程序设计的需要,在程序中的某些 地方有时需要加上一些空操作,以方便 其它流程控制的实现。
<语句序列>中的语句可以是任何的C++语句, 其中包括数据定义和声明语句。
复合语句中的语句序列一般按照书写次序执 行。
复合语句一般作为函数体和结构语句的成分 语句。
复合语句举例
{
将选择语句用一个语句完成
int a,b;
{
cin >> a >> b;
int a,b;
int max;
cin >> a >> b;
if语句(又称条件语句)是根据一个条件满 足与否来决定是否执行某个语句或从两个 语句中选择一个语句执行。
if语句有两种格式:
if (<表达式>) <语句> if (<表达式>) <语句1> else <语句2> 其中的<语句>、<语句1>、<语句2>必须是
一个语句!(复合语句算一个语句。)
if语句的含义
空语句的格式为:
; 空语句不做任何事情,其作用是用于语
法上需要一条语句的地方,而该地方又 不需做任何事情。空语句常常作为结构 语句的子句。
例如:
{ ...... ... goto end; //转向下面由语句标号end标识的空语句 ...... end: ; //空语句
电大C语言程序设计 第3章 流程控制语句
第3章 流程控制语句 章 (二) 教学要求 二 理解:各种语句的定义格式; 理解:各种语句的定义格式; 应用:分析程序, 应用:分析程序,按照解决问题的需要 编写出相应程序。 编写出相应程序。
第3章 流程控制语句 章 3.1 流程控制语句概述 1.流程控制:控制语句执行的顺序 流程控制: 流程控制 2.流程控制的方式 三种 流程控制的方式(三种 流程控制的方式 三种) ①顺序控制 ②条件分支控制 ③循环控制 3. 程序结构的分类 ①顺序结构 条件分支结构: 语句和switch语句实现。 语句实现。 ②条件分支结构:由if语句和 语句和 语句实现 循环结构: 语句、 语句和 语句和do…while ③循环结构:由while语句、for语句和 语句 语句实现。 语句实现。
第3章 流程控制语句 章 3.4 for语句 语句 6. 应用编程举例 例3_5:假设平均值、方差和均方差用变量 :假设平均值、方差和均方差用变量v, f和t表示,则有: 表示, 和 表示 则有:
1 1 2 2 v = ∑xi f = ∑xi − v t = f n i=1 n i=1
n
n
第3章 流程控制语句 章 3.4 for语句 语句 6. 应用编程举例 例3_6:由勾股定理可知,在一个直角三角形 :由勾股定理可知, 两条直角边a和 与斜边 与斜边c的关系为 中,两条直角边 和b与斜边 的关系为 a2+b2=c2,编一程序求出每条直角边均不大于 编一程序求出每条直角边均不大于 30的所有整数解。如(3,4,5),(5,12,13)都是解。 的所有整数解。 都是解。 的所有整数解 都是解 之间的所有素数。 例3_7:编一程序求出 :编一程序求出2~99之间的所有素数。 之间的所有素数
第3章 流程控制语句 章 3.2 if语句 语句 4.if语句嵌套 语句嵌套 c++规定,else总是和其前面最近的尚未配 规定, 规定 总是和其前面最近的尚未配 对的且可见的if配对。 对的且可见的 配对。 配对 (1)if(p1) if(p2) s1 else s2 (2)if(p1) { if(p2) s1 s2 } else p3 (3)if(p1) s1 else if(p2) s2 else s3
第3章C语言流程控制
PPБайду номын сангаас文档演模板
第3章C语言流程控制
3.2 程序流程图
流程图是用一些图框来表示各种操作 。用流程图来表示算法,直观形象,易于 理解。美国国家标准化协会ANSI规定了一 些常用的流程图符号。
PPT文档演模板
第3章C语言流程控制
PPT文档演模板
•菱形框,是对一个给定的条件 进行判断,根据给定的条件是否 成立来决定如何执行其后的操作。 它有一个入口,两个出口 •连接点,是用于将画在不同地 方的流程线连接起来。在流程图 中,编号相同的连接点表示这些 点是互相连接在一起的 •注释框,不是流程图中的必要 部分,不反应流程和操作,只是 为了对流程图中某些框的操作作 必要的补充说明,以便于人们更 好的理解流程图
PPT文档演模板
第3章C语言流程控制
• scanf函数的格式说明符
字符格式说明符意义
意义
%c l
%d h %f 域宽%o *
%s
%u
用于输输入入长单整个型字数符据,可用于%ld、%lo、%lx、%lu以及double型数 据%lf或输%入le有符号的十进制整数
用于输输入入短浮整点型数数,据可,以可用用小于数%或hd者、整%h数o、形%式h输x 入
3.3.3赋值表达式
由赋值运算符将一个变量和一个表达式连 接起来的式子称为赋值表达式。
其一般形式为: <变量><赋值运算符><表达式> 计算过程是:先计算赋值运算符右侧的“ 表达式”的值,然后将这个值赋值给左边的变 量。多个赋值表达式共存则按结合性“自右而 左”进行一步一步分别赋值。
PPT文档演模板
指定输输入入数无据符所号占的的八列进宽制,数应为一个正整数
表示本输输入入字项符在串读,入将后字不符赋串给存相放应到的一变个量字符数组中,输入时以非 空白字符开始,以第一个空白字符结束,字符串以串结束标 志'\0'作为其最后一个字符。
C语句和流程控制
else
语句Sn+1
先看第(1)种形式。它将根据表达式的值决定是否执行“语句S”。被测试的条件
是圆括号中的表达式,若表达式的值非零(表示该条件成立或关系真),则执行
“语句S”,否则跳过“语句S”。如图所示。其中“语句S”既可是单个C语句,也
可以是多个C语句组成的复合语句。
第三章 语句和流程控制
3.5 分支结构程序设计语句
else if(表达式) 语句3
else 语句4 说明: (1) if与else是配对关系,else总是与它上面最近的if配对。 (2) 可用复合语句来改变配对关系。如: if (表达式)
{ if(表达式) 语句1
}
else if(表达式) 语句3
else 语句4 对if语句的嵌套层数c语言没有限制。
第三章 语句和流程控制
3.6 循环语句
3.6.1 while循环语句 while循环语句的一般形式为: while (表达式) 语句S 它表示,当表达式的值为非0(即表达式为真),就执行语句S;再计算表达式的 值,若非0,再执行语句S,直到表达式计算的结果为0(即表达式为假),结束循 环。有的书上称为“当型循环”。其流程如图3-4所示。
第三章 语句和流程控制
3.4 控制语句
3.4.2 选择结构 选择结构如图3-2(b)所示。条件P成立则执行A语句,否则执行B。A、B只能执 行一个,A、B的出口路径汇合在一起。 3.4.3 循环结构 循环结构分为当型循环和直到型循环结构,如图3-2(c)(d)所示。当型循环结构先判 断P是否为真,若为真执行A;再判断P是否为真,若为真再执行A,如此反复, 直到P为假。直到型循环结构先执行A,再判断P是否为假,若P为假再执行A, 如此反复,直到P为真。 下面各节将基于上面各种结制
第3章C#程序的流程控制
• S是格式说明字符(可选项)。n是精度说明符,为整数 (可选项),指明格式化后的参数保留的小数位数。
3.1.2 多分支选择结构
❖ case标签后的常量表达式的数据类型也要与控制 表达式的类型相同,或者可以隐式地进行转换。
❖ case标签后的内嵌语句序列后面,一定要加上 break语句,用于执行完语句序列后,跳出switch ,否则,会产生编译错误。一个switch语句中最 多只能有一个default标签。每个case标签的常量 表达式的值不允许出现相同的情况。
❖任务3.2 支撑知识
▪ (二)字符串的格式化输出
• 表3-7给出了常见的Format格式化种类:
3.1.2 多分支选择结构
❖任务3.3 简易数学计算器
▪ 制作一个简便的数学计算器,能够完成两个实数的加 (+)、减(—)、乘(*)、除(/)运算。运行结果 ,如图3-5所示。
3.1.2 多分支选择结构
3.1.1 单分支选择结构
❖ 充当判断条件的表达式,可以是关系表达式、逻 辑表达式(布尔表达式)或者直接用布尔值true (真)与false(假)。
❖ 如果只想条件满足执行语句序列,条件不满足不 执行任何语句,那么可以省略else子句,只保留if 子句部分即可,即:
if(条件表达式) {
语句序列 }
3.1.2 多分支选择结构
❖任务3.3 支撑知识
▪ (一)ListBox列表框
• 列表框 和组合框 可以用于对批量数据的处理在 列表框中任何时候都可以看到多个项,在组合框中一般 只能看到一个项。
11-12-2学期C语言 第3章 C程序的流程控制1
3.2.2 关系运算与关系表达式
(4)判定两个浮点数是否相等时,因存储上的误差,可能得出错误 的结果。 例如: 1.0/3.0*3.0==1.0 由于1.0/3.0得到的值在计算机中有效位数是有限的,因此上面 关系表达式的值为0(假),并不为1(真)。 ★应避免对两个实数表达式作‚相等‛或‚不相等‛的判别。 上式可改写为: fabs (1.0/3.0* 3.0-1.0)<1e-5 fabs是求绝对值函数。只要1.0/3.0与1.0之间的差小于10-5(或 一个其它的很小的数),就认为1.0/3.0*3.0与1.0相等。 (5)要表示x在区间[a,b]中,在数学中使用表达式a≤x≤b。但C 中应写成: a<=x && x<=b ‚&&‛是逻辑运算符‚与‛。a<=x的值为1(真)且x<=b的值 亦为1(真),则整个表达式的值为1(真)。
2. 算法的基本性质
算法应具备5个性质:
1、有穷性 2、确定性 性。 3、有零个或多个输入 外界取得必要的信息。 所谓输入是指在执行算法时可能需要从 一个算法应包含有限的操作步骤,而不能是无限的。 算法中的每一个步骤都应当是确定的,而不应当是
含糊的、模棱两可的。即:算法的含义应当是唯一的,不存在歧义
算术运算符
(高)
优先级相同(高)
关系运算符 赋值运算符 (低)
优先级相同(低)
关系运算符都是双目运算符,其结合性均为左结合。 关系运算符的优先级低于算术运算符,高于赋值运算符。
2.关系表达式的值 有两个!表达式成立,即为‚真‛(通常为1);表达式不成 立,即为‚假‛(0)。 例如: int x=2, y=3,z;
数学与信息学院
胡凤珠
3.1 算法
3.2 判断 3.3 选择型程序设计 3.4 循环型程序设计
C语言(第三章)(上)
• 早期 语言不提供专门的逻辑(布尔)类型,规定用非 值表示“真”,用0 早期C语言不提供专门的逻辑 布尔)类型,规定用非0值表示 语言不提供专门的逻辑( 值表示“ 值表示“ 值表示“假”。 • 表达式,只要值为非 (包括负数),就说明其为“真”;只要其值为 ,就 表达式,只要值为非0(包括负数),就说明其为“ ),就说明其为 只要其值为0, 说明其为“假”。从而给判断带来很大的灵活性。 说明其为“ 从而给判断带来很大的灵活性。 • 在C99中,增加了_Bool类型,并增加了头文件<stdbool.h>,在其中定义了 中 增加了 类型,并增加了头文件 , 类型 存储1, 存储0。 宏bool、true和false,用true存储 ,用false存储 。 、 和 , 存储 存储
注意: 注意:
•
中是允许的。 (1)表达式 >2>7>8在C中是允许的。 )表达式5> > > 在 中是允许的 整个关系表达式的值为多少?? 整个关系表达式的值为多少?? (2)关系表达式的值是整型数 或1,可以看成是一种整型表 )关系表达式的值是整型数0或 , 达式。 达式。 若有: 如,若有: int i=1, j=7,a; a=i+(j%4!=0); 则a的值为?? 的值为?? 的值为 值参与运算: (3)字符在关系表达式中出现按照其 )字符在关系表达式中出现按照其ASCII值参与运算: 值参与运算 的值分别为?? 如:‘a’>’A’ ‘b’==‘B’-32的值分别为?? 的值分别为 不相等”的判别, (4)避免对两个实数表达式作“相等”或“不相等”的判别, )避免对两个实数表达式作“相等” 考虑用其差绝对值之差小于一个很小的值的形式: 考虑用其差绝对值之差小于一个很小的值的形式: 如: fabs (1.0/3.0* 3.0-1.0)<1e-5 < 在区间[ ] 使用a< (5)表示 在区间[a,b]中,使用 <=x && x<=b )表示x在区间 < 例如: 例如: -10<=x && x<=10 < < 若使用: 若使用:-10≤x≤10。 。 若x=10,结果为?? ,结果为?? 若x=100,结果为?? ,结果为?? 若x=-100,结果为?? ,结果为??
第3章流程控制C语言教程零基础到大神
第3章流程控制学习目标◆掌握选择结构语句◆掌握循环结构语句前面的章节一直在介绍C语言的基本语法知识,然而仅仅依靠这些语法知识还不能编写出完整的程序。
在程序中,通常需要加入业务逻辑,并对程序的流程进行控制。
本章将重点讲解C语言中最基本的三种流程控制语句。
3.1 程序的运行流程图流程图是描述问题处理步骤的一种常用图形工具,它是由一些图框和流程线组成的。
流程图描述问题的处理步骤,形象直观,便于阅读。
画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如图3-1所示。
起止框输入/输出框判断框处理框流程线连接点图3-1流程图符号图3-1所示的流程图符号中,列举了四种图框和两种流程线,具体说明如下:●起止框用于表示流程的开始或结束;●输入/输出框用平行四边形表示,在平行四边形内可以写明输入或输出的内容;●判断框用菱形表示,它的作用是对条件进行判断,根据条件是否成立来决定如何执行后续的操作;●处理框用矩形表示,它代表程序中的处理功能,如算术运算和赋值等;●流程线用实心单向箭头或直线表示,可以连接不同位置的图框,流程线的标准流向是从左到右和从上到下,可用直线表示,非标准流向的流程线应使用箭头指示方向;●连接点用圆形表示,用于流程图的延续。
通过上面的讲解,初学者对流程图符号有了简单的认识,接下来先来看一个简单的流程图,如图3-2所示。
第3章流程控制图3-2判断奇偶数图3-2表示的是一个判断奇偶数的流程图,下面针对该流程图中的执行顺序进行说明,具体如下:第1步:程序开始;第2步:进入处理框,将变量number赋值为1;第3步:进入判断框,判断number是否为偶数,如果是偶数,则进入下面的输出框,输出number是偶数;否则进入左面的输出框,输出number是奇数;第4步:输出完成后,进入结束状态,程序终止。
3.2 顺序结构语句前面章节讲解的程序都有一个共同的特点,即程序中的所有语句都是从上到下逐条执行,这样的程序结构叫做顺序结构。
第3章 基本的程序流程控制结构
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
3.3.1 条件判断
在顺序结构中,各语句是按排列的先后次序顺序执行的, 是无条件的,不必事先作任何平判断。但在实际中,常常 有这样的情况:要根据某个条件是否成立决定是否执行指 定的任务。例如: 如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 周末我们去郊游; (需要判断是否是周末) 如果x>y,输出x,否则输入y。 (需要判断x是否大于y) 判断的结果应该是一个逻辑值:“是”或“否”,在计算 机语言中用“真”和“假”表示。例如,当x>y时,满足 “x>y”条件,就称条件“x>y”为真,如果x≤y,不满足 “x>y”条件,就称条件“x>y”为假。
}
计算机程序设计基础(C语言)
例3.3 求4个数中的最大值。
算法分析:程序的功能是输入4个数给a,b, c,d。把a先赋予变量max,再用语句判别 max和b的大小,如max小于b,则把b赋予 max。同理,max继续跟c和d比较即可使 得max中总是大数,最后输出max的值就 是4个数中的最大值。
计算机程序设计基础(C语言)
在判定两个浮点数是否相等时,由于计算机存储上 出现的误差,会出现错误的结果。例如: 1.0/3.0*3.0==1.0 在数学上显然应该是一个恒等式,但由于1.0/3.0得 到的值的有效位数是有限的,并不等于,因此上 面关系表达式的值为0(假),而不为1(真)。 所以应避免对两个实数表达式作“相等”或“不 相等”的判定。上式可以改写为: fabs(1.0/3.0*3.0-1.0)<1e-5
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
第3章 C语言程序的流程控制
C语言程序设计
void main(void)//错误程序 { int x,y,z,max; scanf("%d%d%d",&x,&y,&z); max=x; if(y>z) if(y>x) max=y; else if(z>x) max=z; } printf("The max value is %ld\n",max);
N-S图的每一种基本结构都是一个矩形框。整个算法 图的每一种基本结构都是一个矩形框。 可以像堆积木一样堆成。 可以像堆积木一样堆成。 N-S图保留了流程图形象、直观的优点,且去掉了容 图保留了流程图形象、直观的优点, 易导致程序非结构化的流线。 易导致程序非结构化的流线。
7/82
C语言程序设计
3. 伪代码
4/82
C语言程序设计
2. 算法的组成要素
操作。在高级语言中所描述的操作主要是包括: 操作。在高级语言中所描述的操作主要是包括: 算术运算、逻辑运算、关系运算、函数运算、 算术运算、逻辑运算、关系运算、函数运算、 位运算、 运算等。 位运算、I/O运算等。 控制结构。 控制结构。控制结构是指如何控制组成算法的 一系列操作的执行顺序。 一系列操作的执行顺序。结构化程序设计方法 由三种基本控制结构组成:顺序结构、 由三种基本控制结构组成:顺序结构、选择结 构和循环结构。 构和循环结构。
关系表达式例题
设: char c='k'; int i=1,j=2,k=3,z; z=3-1>=i+1<=j+2; 1 z=5>2>7>8; 0 z=i+(j%4!=0); 2 z='a'+5<c; 1
C语言第3节流程控制
要点 有分号
语句是一条语句,可以是复合语句,循环体若 为多条语句,可采用复合语句方式
逻辑上是一条语句
和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程序的流程控制
forint i=0; i<6; i++ //循环6次;输出6行
cout<<endl;
//每次循环换行;换6次;显示6行
int j;
forj=0;j<5i;j++ cout<<‘ ’ //每行输出若干空格
forj=0;j<i+i+1;j++ cout<<‘’ //然后输出若干‘’
cout<<合计:<<s;
的值;则从default开始的语句序列
若没有default语句;则什么也不做
break语句在switch分支结构中的应用
在依次语句序列的过程中;如遇见break语句;则立即停止 语句序列的;跳出switch分支结构
因此;若要让分支结构只与整型表达式匹配的整型常量表 达式后的语句序列;而不往下下面的语句序列;应在该语
程序段完成的功能是:交换X和Y的值
条件分支结构
— If多分支结构一
语句格式:
If条件 语句1 else 语句2
流程示意:
true
语句1
条件
false
语句2
含义:
如果条件成立;语句1;否则语句2
条件分支结构
— If多分支结构二
语句格式:If条件 语句
流程示意:
无else子句
true 条件
语句
false
for 循环含义
第3章 C程序的流程控制(ygg)共52页
min=c s5:输出min
1 算法
五.结构化程序设计方法:
1.优点:便于编写、测试、阅读、修改和维护程序 2.内容:
1)自顶向下,逐步求精 先定大步骤,再对每个步骤不断细化
2)模块化设计 对于复杂的程序,将它划分成若干个子模块(子 程序或函数),规定好模块间的参数传递,共同 协作,“分而治之”
三.算法的表示:
1.流程图:
2)三种结构:
S1 S2 S3
(a)顺序结构
真 P假
S1
S2
(b)选择结构
P
假
真 S2
(c)重复结构
1 算法
三.算法的表示:(重点讨论N-S结构图)
2.N-S结构图:省略流程线,用矩形框表示 (1)结构化程序设计的三种基本结构:
1)顺序结构:
A
B
2)选择结构:
条件
真
假
A
3)结构化编程: 使用结构化编程的高级语言,使用结构化语句, 注意缩进。
2 选择/分支/判断
一.关系运算符 1.关系运算:对两个运算量进行大小关系的比较。 2.C语言提供六种关系运算符:
<
优 先
<=
级 高
>
(小于) (小于或等于)
(大于)
b<c b<=c b>c
>=
优
先 ==
级
低 !=
(大于或等于) (等于) (不等于)
可写成:! a | | a>b
2 选择/分支/判断
二. 逻辑表达式 1. 逻辑表达式:用逻辑运算符将关系表达式或逻辑量连接起来的式 子。
四.算法举例:
第3章C程序的流程控制
输入:10 则 10 a
scanf 格式字符
格式字符
使用形式
功能说明
d
%d %md %ld %hd
带符号的十进制整数
o
%o %mo %lo %ho
无符号的八进制整数
x,X
%x %mx %lx %hx
无符号的十六进制整数
#include <stdio.h>
文件包含预处理命令
#define PI 3.14159
void main( )
{
float r,area,v; printf(“Input r: ”);
变量定义 /*人机交互,输出提示信息*/
scanf("%f",&r);
area=PI*r*r;
/*求圆的面积并将结果赋给area*/
格式:getchar( ) 功能:从键盘输入一个字符。
例3.14:使用getchar( )函数输入字符
#include <stdio.h>
void main( ) {
char c; c=getchar( );
运行情况: a a
putchar(c);
}
3.4 顺序结构程序设计
例3.17: 输入半径,求圆的面积和球的体积
a*=a a的值为12×12=144 a-=144 a的值为144-144=0 a+=0 a的值为 0
3.3 输入输出
C语言无I/O语句,I/O操作由函数实现
#include <stdio.h>
头文件
• 字符输出函数: putchar • 字符输入函数: getchar
C#程序的流程控制
for(表达式1; 表达式2; 表达式3)
{ 语句块;
} 其中,表达式1为赋值表达式,通常用于初始化循环
控制变量;表达式2为布尔型的表达式,用来检测循 环条件是否成立;表达式3赋值表达式,用来更新循 环控制变量的值,以保证循环能正常(zhèngcháng)终止
共四十一页
第25页
3.2.3 for语句(yǔjù)
❖ for语句3个表达式均可以省略,但”;”不能省略。省略上述 表达式后,使for语句有了几种变化形式:
省略表达式1。此时应在for语句前面给循环控制变量赋初始值。 省略表达式3。此时应在for语句的循环体重改变循环控制变量,否则
容易造成死循环。 省略所有三个表达式。当for语句中没有表达式2时,编译程序将解
do {
语句块; } while (表达式);
❖ 其中,语句块为循环体,表达式必须是布尔型 表达式,用来检测循环条件是否成立。
共四十一页
第21页
3.2.2 do/while语句(yǔjù)
❖ do-while语句执行过程如下
首先执行一次循环体,然后再计算表达式,如果表达 式的值为true,则再执行一次循环体,重复(chóngfù)上 述操作,直到表达式的值为false时退出循环。如果 条件在开始时就为false,那么执行一次循环体语句 后退出循环。
共四十一页
第11页
3.1.3 switch语句(yǔjù)
❖ 当判断的条件较多,不止一两个分支时,可使用 switch语句。switch语句专用于实现多分支结构 ,其语法更简洁,能处理(chǔlǐ)复杂的条件判断。
C#第3章流程控制
流程控制
循环 在什么情况下使用循环 当需要对某些语句重复执行,或需要多次执 行同一任务,直到完成另一个 比较大的任务时,可以使用循环结构。 C#提供了3种循环结构,用来实现重复性的 任务: do循环 while循环 for循环
流程控制
for循环流程图
流程控制
for循环 do循环和while循环可以用于执行不知道循环次数的任 务,如果事先知道语句要重复执行的次数,则可通过for循环 来实现。
for(初始值;测试值;步长) { …… //代码行或代码块 }
要定义for循环,需要以下信息: 初始化计数器变量的一个起始值; 继续循环的条件,即测试值,该测试值应涉及到计数器变量; 每次循环结束后,对计数器变量的值通常步长来进行改变。
流程控制
【例3-6】编程求下式的值(要求编写成 控制台应用程序):
【例3-6】程序代码
using System; class WhileTest { public static void Main() { int sum,i=1,t; sum=0; //和赋初值0 while(i<=10) //循环,循环条件为“i<=10” { t=i*i; //求第i项的值放在t中 sum=sum+t; //把该项的值加到和sum中 i=i+1; //i的值加1准备加下一项 } Console.WriteLine("1*1+2*2+…+10*10={0}",sum); } }
流程控制
do….while循环 do循环保证循环体至少执行一次
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
36/82
C语言程序设计
void main(void) //例3.8 { char c; case ' ': c=getchar(); case '\t': switch(c) case '\n': { case '0': printf("is a white\n"); case '1': break; case '2': default: case '3': printf("is a char\n"); case '4': break; case '5': } case '6': } case '7': case '8': case '9': printf("is a digit\n"); break;
7/82
C语言程序设计
3. 伪代码
伪代码是介于自然语言与计算机语言之间的文 字符号算法描述的工具。它无固定的、严格的 语法规则,通常是自然语言与程序设计语言的 混合体。 过程:“做什么”———>“如何做” 自顶项下、逐步细化过程 首先,从问题的全局出发,给出高度概括、抽 最后,随着算法的不断细化,逐步进入“如何 然后,是在子问题一级的描述算法,即是对全 象的算法,即说明“做什么”。实际上,这一步 做”的考虑,算法中程序设计语言的成份越来越 局算法的细化,算法中已逐步含有具体程序设计 是把问题分解为几个子问题或子功能,这时常常 多,当最后把算法全部细化为程序设计语言时, 语言的成份。 用自然语言来描述。 “如何做”的问题也就解决了。
C语言程序设计
第3章 C语言程序的流程控制
1/82
C语言程序设计
主要内容
3.1 算法 3.2 判断 3.3 选择型程序设计 3.4 循环型程序设计
2/82
C语言程序设计
3.1 算法
一个程序应包括:
对数据的描述。在程序中要指定数据的类型和数 据的组织形式,即数据结构(data structure) 对操作的描述。即操作步骤,也就是算法 (algorithm)
28/82
C语言程序设计
void main(void)//错误程序 { int x,y,z,max; scanf("%d%d%d",&x,&y,&z); max=x; if(y>z) if(y>x) max=y;
else
if(z>x) max=z; } printf("The max value is %ld\n",max);
4/82
C语言程序设计
2. 算法的组成要素
操作。在高级语言中所描述的操作主要是包括: 算术运算、逻辑运算、关系运算、函数运算、 位运算、I/O运算等。 控制结构。控制结构是指如何控制组成算法的 一系列操作的执行顺序。结构化程序设计方法 由三种基本控制结构组成:顺序结构、选择结 构和循环结构。
29/82
C语言程序设计
例3.5 解一元二次方程
ax2+bx+c=0
30/82
C语言程序设计
#include <stdio.h> #include <math.h> #define E 1e-7 void main(void) { //2,-4,2; 1,4,1; 4,1,1; double a,b,c; scanf("%lf%lf%lf",&a,&b,&c); if(fabs(a)<E) if(fabs(b)<E) printf("no answer\n"); else printf("the sigle root is %f\n", -c/b);
32/82
C语言程序设计
3.3.2 if-else if结构的应用
if(e1) s1; else if(e2) s2; else if(e3) s3; …… else if(en) s n; else sn+1;
33/82
C语言程序设计
#include <stdio.h> void main(void) { float score; char grade; scanf("%f",&score); if(score>=90) grade='A'; else if(score>=80) grade='B'; else if(score>=70) grade='C'; else if(score>=60) grade='D'; else grade='E'; printf("The grade is %c\n", grade); }
e
F
statement2
20/82
C语言程序设计
例3.3 求绝对值
S1: 输入一个数 S2: 求其绝对值 S3: 输出绝对值
S1:输入x S2:若x<0, 则x=-x S3: 输出x
21/82
C语言程序设计
例3.3 求绝对值程序
#include <stdio.h> void main(void) { double x; scanf("%lf",&x); if(x<0.0) x=-x; printf("The absolute value is %lf\n",x); }
Nikiklaus Wirth提出的公式: 数据结构+算法=程序
3/82
C语言程序设计
3.1.1 算法的组成要素与基本性质
1. 算法的性质:算法就是进行操作的方法和步 骤,算法有如下一些性质: ①是一有穷动作序列; ②此动作序列只有一个初始动作; ③序列中每一动作仅有一个后继动作; ④序列终止表示问题得到解答或问题没有解答
#include <stdio.h> void main(vodi) { int x,y,z,max; scanf("%d%d%d",&x,&y,&z); if(x>y)max=x; else max=y; if(max>z); else max=z; printf("Max=%d\n",max); }
10/82
C语言程序设计
3.2.2关系运算与关系表达式
< 小于 <= 小于或等于 > 大于 >= 大于或等于 == 等于 != 不等于 双目、左结合性 两个优先级:<,<=,>,>=的优先级高于==和!= 关系运算符的优先级低于算术运算符
11/82
C语言程序设计
关系表达式例题
设: char c='k'; int i=1,j=2,k=3,z; z=3-1>=i+1<=j+2; 1 z=5>2>7>8; 0 z=i+(j%4!=0); 2 z='a'+5<c; 1
31/82
C语言程序设计
else{ double disc,twoa,term1,term2; disc=b*b-4*a*c; twoa=2*a; term1=-b/twoa; term2=sqrt(fabs(disc))/twoa; if(disc<0.0) printf("real part=%f,imagpart=%f\n", term1,term2); else printf("root1=%f,root2=%f\n", term1+term2,term1-term2); } }
1. 2. 3. 4. 5. 6. 7.
16/82
C语言程序设计
一些例题
char c='k'; int i=1,j=2,k=3; float x=3e+5,y=0.85; int z; z= !!! x; 0 z= i<j && x<y; 0 z= i==5 && c && (j=8); 0 z= x+y || i+j+k; 1 z= k-3 && j++; 0 z= k-2 || j++; 1
1) && 2) || 3) ! && || ! :
14/82
C语言程序设计
基本逻辑运算真值表
数学表达式 a<x<b C语言表达式 a<x && x<b
15/82
C语言程序设计
2 常用的逻辑运算规律
0||a = = a a 1&&a = = a 1||a = = 1 0&&a = = 0 1 a||!a = =1 a&&!a= = 0 1 a||a = = a a&&a= = a !(a||b) = = !a&&!b !a&&!b 德· 摩根定律 !(a&&b)= = !a||!b !a||!b a !!a= =a
17/82
C语言程序设计
例:写出描述点A(x,y)落在阴影部分的表达式
-2<x && x<2 && -2<y &&y<2 && x*x+y*y>1