C语言第四讲 程序的控制结构
C语言程序控制结构

编辑课件
113 3
顺序结构
例4.4 求ax2+bx+c=0方程的根。 a,b,c由键盘输入,设 b2 4ac>0。
一元二次方程式的根为
b b2 4ac
x1=
2a
x2= b b2 4ac
2a
可以将上面的分式分为两项:
b
b2 4ac
p= 2 a , q= 2a ,则 x1=p+q,x2=p-q。
编辑课件
printf("a==b\n"); else
printf("a!=b\n"); }
运行结果: Enter integer a:12 Enter integer b:12 a==b
运行结果: Enter integer a:12 Enter integer b:9 a!=b
编辑课件
225 5
分析以下程序的输出结果:
scanf("%d%d",&a,&b); if(a>b) t=a;a=b;b=t; printf("a=%d,b=%d\n",a, b); getch(); }
编辑课件
226 6
(3)#include <stdio.h> void main ( ) {
int x,y; scanf("%d",&x); y=-1; if(x!=0) y=1; if(x>0) y=1; else y=0;
if(a!=0) 等价于if(a)
if(a>=5&&a<=10)
例:执行下列程序段 后 a 的值是____。 int a=3; if (2) a=5;
C语言 第四讲 程序的控制结构

有以下程序 #include "stdio.h" main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++;break; case 3: a++; b++; } printf("a=%d,b=%d\n",a,b); } 程序的运行结果是______。 A、a=1,b=0 B、a=2,b=2 C、a=1,b=1
else y=1.5*20;
printf(" \n行李重量为%f }
26
收费:%f " ,x,y);
3.多分支——if的一种扩展形式 if (表达式1) 语句 1; else if(表达式2) 语句 2; else if(表达式3) 语句 3; …… else if(表达式m) 语句 m; else 语句 n ;
– 只有一个出口;
– 无死语句,即不存在永远都执行不到的语句; – 无死循环,即不存在永远都执行不完的循环。
采用“自顶向下、逐步求精”和模块化的方 法进行结构化程序设计
9
§4.2 程序结构(1): 顺序结构
顺序结构的特点是按照语句出现的先后 顺序执行程序,如c语言中的输入输出 操作和赋值操作。
#include <stdio.h> main() { int score,x; printf("输入成绩="); scanf("%d",&score); x=score/10; switch (x) { case 10: case 9: printf("成绩为A");break; case 7: case 8: printf("成绩为B");break; case 6: printf("成绩为C");break; default:printf("成绩为D"); } }
C语言程序控制结构

C语言程序控制结构C语言是一种面向过程的编程语言,具有丰富的程序控制结构,可以控制程序的执行流程和逻辑。
本文将介绍C语言的常见控制结构,包括顺序结构、选择结构和循环结构,并提供示例代码进行说明。
1.顺序结构:顺序结构是程序中最简单的结构,按照代码的编写顺序一行接一行地执行。
每个语句都会顺序执行,直到程序结束。
例如:```c#include <stdio.h>int maiprintf("Hello, World!\n"); // 打印输出int x = 10; // 定义一个变量 x,并赋值为 10int y = 20; // 定义一个变量 y,并赋值为 20int sum = x + y; // 将 x 和 y 相加,保存到 sum 变量中printf("Sum: %d\n", sum); // 打印输出 sum 的值return 0;```2.选择结构:选择结构根据条件的真假选择不同的执行路径。
常见的选择结构有if 语句和 switch 语句。
2.1 if 语句:if 语句根据条件执行或跳过一段代码。
如果条件为真,则执行 if 代码块中的语句;如果条件为假,则跳过 if 代码块。
例如:```c#include <stdio.h>int maiint x = 10;if (x > 0) { // 如果 x 大于 0printf("x is positive\n"); // 打印输出} else { // 否则printf("x is non-positive\n"); // 打印输出}return 0;```2.2 switch 语句:switch 语句根据表达式的值选择不同的执行路径。
通常使用 switch 语句来处理多个条件的情况。
例如:```c#include <stdio.h>int maiint day = 3;switch (day)case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;default:printf("Other day\n");break;}return 0;```3.循环结构:循环结构用于重复执行一段代码,直到满足特定条件。
c语言程序设计04-程序控制结构

4.4 循环结构
4.4.4 其它控制语句
break语句
【例4.24】输入一个正整数n,判断它是否为素数。素数就是只能被1 和自身整除的数。
解题思路: 判断n是否为素数,可以按素数定义来进行判断,用n依次除以2到n-1之间
的所有数,只要发现有一个数能够被n整除,马上可以结束循环,判定n不 是素数。如果没有一个能够被n整除的数,则n为素数。
4.4 循环结构 4.4.2 for循环
for语句的格式如下:
for (表达式1;表达式2;表达式3) 循环体
表达式1
假 表达式2
真 循环体
表达式3
【例4.22】用for语句求sum=1+2+3+…+99+100。
【例4.23】编写程序找出所有三位水仙花数。所谓水仙 花数是指其各位数字的立方和等于该数本身。例如, 153=13+53+33,所以153是水仙花数。
else 语句2
真ቤተ መጻሕፍቲ ባይዱ
假
表达式
语句1
语句2
【例4.6】输入两个整数,从小到大排序输出
【例4.7】使用if-else语句改写例4 .4,求三个整数 的最大值。
4.3 选择结构
4.3.2 if嵌套
if ()
if ()
语句1
else
语句2
else
if ()
语句3
else
语句4
【例4.8】输出3个整数中的最大数。
假 表达式
真 循环体
4.4 循环结构
【例4.15】编写程序求sum=1+2+3+…+100的值。 【例4.16】编写程序求1*2*3*…?<=100000。 【例4.17】输入一个整数,求它的各位之和。 【例4.18】设计采用欧几里德算法求两个自然数的
第4章 C语言程序的基本控制结构

#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B
真
表达 式
假
条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)
C语言 第4章 程序的控制结构

printf("Input a, b:"); scanf("%d,%d", &a, &b);
} if (a > b) max = a; else
max = b;
max = a > b ? a : b;
printf("max = %d", max);
语句2;
break;
…… default :
语句n; break; }
必须是常量!!
它是如何执 行的呢?
必须有空格!!
30/81
5.8用于多路选择的switch语句
Example: switch (month) {
假设 month = 1
case 1:
printf("January\n");
break;
第4章 程序的控制结构
本章学习内容
算法的描述方法 – 常用算法(累加累乘、统计、递推迭代、穷举) 选择结构及相关控制语句 循环结构及相关控制语句 结构化程序设计的基本思想 Skill: – Map problem to solution in flowchart and pseudocode
forms
else max = b;
printf("max = %d\n", max);
End
Turn Flowchart to C Program
22/81
【例5.2】计算两整数的最大值
#include <stdio.h> main() {
int a, b, max;
printf("Input a, b:"); scanf("%d,%d", &a, &b);
C语言教程第4章程序的控制结构.ppt

图
printf("please enter year,capital:");
编
scanf("%d%lf",&n,&capital);
程
deposit=capital*pow(1+rate,n);
printf("deposit=%lf\n",deposit);
}
2020/4/12
14
C语言大学实用教程
画 出
输入n和captial
流
程
depoist=captial*(1+rate)n
图
输出depoist
结束
2020/4/12
13
C语言大学实用教程 #include <math.h>
()
#include <stdio.h>
3
main()
根{
据
int n;
流
double rate=0.0225;
程
double capital,deposit;
C语言大学实用教程
简单分支选择(单分支)结构
条件成立否 no yes 语句A
条件表达式
Hale Waihona Puke .T..F.语句
格式:
2020/4/12
if (表达式) 语句/语句组;
20
C语言大学实用教程
双分支选择结构
条件表达式
.T.
.F.
语句1
语句2
格式: If (表达式) 语句1/语句组1; else 语句2/语句组2;
2020/4/12
4
C语言大学实用教程
算法的描述方法
C语言教程第4章程序的控制结构

printf("y=%f\n",y);}
27
C语言大学实用教程 语言大学实用教程
switch语句构成的多分支结构 用 switch语句构成的多分支结构
多路选择 switch (表达式 表达式) 表达式 { case 常数 常数1: 语句序列1; 语句序列 case 常数 常数2: 语句序列2; 语句序列 ………… default: 语句序列3; 语句序列 } default可以没有,但最好不省略 可以没有, 可以没有 不要忘记break 不要忘记
2011-3-21 28
C语言大学实用教程 语言大学实用教程
例4.8
编程设计一个简单的计算器程序。 编程设计一个简单的计算器程序。(ex48) 要求根据用户从键盘输入的表达式: 要求根据用户从键盘输入的表达式: 操作数1 运算符 运算符op 操作数 操作数2 操作数 计算表达式的值,指定的运算符为加( )、 计算表达式的值,指定的运算符为加(+)、 )、乘 )、除 减(-)、乘(*)、除(/) )、 )、 )
2011-3-21
C语言大学实用教程 语言大学实用教程
开始
( 2 画 出 流 程 图
r=1.5 L=2*3.14*r s=3.14*r*r 输出L,s 输出
结束
2011-3-21 10
)
C语言大学实用教程 语言大学实用教程
# include <stdio.h>
( 3 根 据 流 程 图 编 程 )
2011-3-21
# define PI 3.14
main() { float r,l,s; r=1.5; l=2*PI*r; s=PI*r*r; printf("\nl=%f,s=%f",l,s); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3种逻辑运算符
逻辑与 && 逻辑或 || 逻辑非 !
X && Y X || Y
X
Y
X
Y
!X
X
逻辑运算符的含义
逻辑与 &&
(x>1)&&(y>1)
逻辑或 ||
(x>1)||(y>1)
逻辑非 !
(x>1)
!(x>1) 即 x<=1
逻辑运算符的功能
逻辑与 && 逻辑或 ||
a 假 假 真 真 b 假 真 假 真 a&&b 假 假 假 真 a||b 假 真 真 真
while语句 for语句 计数型循环结构的设计
42
循环结构的实现—while语句
语法
while() { }
一般形式 循环控制变量初值 while(判终值) { 循环通项 改变循环控制变量的值
}
43
while示例 实现华氏-摄氏温度转换表
#include <stdio.h> void main(void) { int fahr, lower, upper; double celsius; printf("Enter lower:"); scanf("%d", &lower); printf("Enter upper:"); scanf("%d", &upper); printf("fahr celsius\n");
C关系表达式
x <= 10 x >= 10 x != 10 x == 10
用关系表达式描述条件
判断
x 是否为负数
x<0 判断 x 是否不为零 x != 0
18
逻辑运算
x<=1 关系运算 -1 <= x <= 1
0
x x
-1
1
x
>= -1 并且 x <= 1
>= -1 && x <= 1
转2
否则转3 3.结束
15
条件的表示
关系运算 >,>=,==,<=,< ,!= 逻辑运算 && , || , ! 条件的表示
16
关系运算
x <= 15
比较 x 和 15 的大小 比较的结果:真 假
当 x 取值9.5时, x <= 15的结果是:? 当 x 取值21.3时, x <= 15的结果是:?
30
#include <stdio.h> /*例2-4 */ int main(void) { double x, y;
printf("Enter x (x>=0):\n"); scanf("%lf", &x); if(x <= 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; printf("f(%f) = %.2f\n", x, y); return 0;
fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7
13
循环结构算法示例
顺序算法
Байду номын сангаас
设置fahr为30 计算对应的摄氏温度celsius 输出celsius 设置fahr为31 计算对应的摄氏温度celsius 输出celsius 。。。 设置fahr为35 计算对应的摄氏温度celsius 输出celsius
7
单分支结构
算法示例:
如果
c大于max则 max=c
真 表达式 语句1
假
8
双分支结构
真 假
算法示例:
如果
表达式
语句1 语句2
a大于b则 max=a 否则 max=b
9
多分支结构图示
假 表达式1 真 真 假 表达式2 … 假
表达式n-1 真 语句1 语句2 … 语句n-1
10
int
x 1.0/x 的数据类型?
33
求两个数中较大值
int a,b,max; if(a>b) max=a; else max=b;
int max(int a,int b) {int m; 函数名不要和函数中的变量同 if(a>b) m =a; else m =b; return m; }
3
三种基本结构的图示
顺序结
选择结构
4
构
循环结构
三种基本结构的共同特点
(1)只有一个入口。 (2)只有一个出口。(请注意:一个菱形判 断框有两个出口,而一个选择结构只有一 个出口。不要将菱形框的出口和选择结构 的出口混淆。) (3)结构内的每一部分都有机会被执行到。 (4)结构内不存在“死循环”(无终止的循环) 。
5
顺序结构-体现语句的执行循序
最基本的顺序结构 IPO结构
输入。。。 计算。。。 输出。。。
{。。。 。。。 。。。}
顺序语句 赋值语句 函数调用语句
复合结构
输入输出语句 无返回值用户自定义函数调 用语句
6
选择结构
双分支结构 单分支结构 多分支结构
对比
36
具有复合语句的if语句
if(条件) {条件为true时的处理语句 } else {条件为false时的处理语句 }
37
示例
if(x>y) { z=x; x=y; y=z; }
多条语句
38
示例
if( ctri < MAX_SAFE_CTRI){ printf(“Car #%d :safe\n”,auto_id); safe=safe+1; }else{ printf(“Car #%d :unsafe\n”,auto_id); unsafe=unsafe+1; }
条件的表示
写出满足下列条件的C表达式。 ch 是空格或者回车。 ch == ' ' || ch == '\n' number是偶数。 number % 2 == 0 year 是闰年,即 year 能被 4 整除但不能被 100 整除,或 year 能被 400 整除。 (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
34
if与return的配合
int max(int a,int b) { if(a>b) return a; else return b; }
一个函数中可以出现 多条return 语句 每一次执行只有一条 return 语句可以被执 行到。
35
if语句实现检查功能
int div(int x,int y) {if(y==0) return -1; else return x/y; } int div(int x,int y) { if (y==0) return -1; return x/y; }
输出,并保留2位小数
26
程序解析-求分段函数
#include <stdio.h> int main(void) { double x, y; Enter x (x>=0): Enter x (x>=0):
9.5
f(9.500000)=12.67
15
f(15.000000)=20.00
printf("Enter x (x>=0):\n"); scanf("%lf", &x); if(x <= 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; printf("f(%f) = %.2f\n", x, y); return 0;
运行结果
#include <stdio.h> int main(void) { double x, y; printf("Enter x:\n"); scanf("%lf", &x); if(x != 0) y = 1/x; else y = 0; printf("f(%.2f) = %.1f\n", x, y); return 0; } input x: 2.5 f(2.50)=0.4 input x: 0 f(0.00)=0.0
if语句实现分支结构
if 语句 选择结构的测试 if与return的语句结构 具有复合语句的if语句
25
例2-4 分段计算水费
要解决的问题:
输入一个double数据 计算分段函数
4x y f (x) 3 2 .5 x 1 0 .5 x 15 x 15
假
语句n
多分支结构算法示例
如果 x大于0则y=1 否则 如果 x等于0 则 y=0 否则 y=-1
11
循环结构的要素
循环体
重复操作
循环控制结构—循环 控制变量
变量的初值
变量的终值
改变变量的值
12
循环问题示例