C语言课件第三章C语言的基本控制结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XUAN SHANLI
else stat2;
说明: ①书写采取缩进形式, 便于区分。 ②else与最近的if 相匹 配,从内到外。
if(e2#)include <stdio.h>
svtoatid3; main ( void)
else{
stiantt4x; ,y ;
合 称为isf结ca构nf的(“嵌%套d”。, 各&x种);if结构都
void main(void)
后置:先引用后运算。
{
int a=3,b;
XUAN SHANLI
b=a+++a++;
printf(“b=%d”,b);
合 b=++a+(++a);
printf(“b=%d”,b);
}

工 ⒉在逻辑运算中,如果逻辑值能确定,则不需再进行运算。
int a=0,b=0 ++a || b++; /* b的值?*/
}
内层缩进。
举例:求一元二次方程ax2+bx+c=0的根。
XUAN SHANLI
#include <stdio.h>
#include <math.h>
void main(void)
{
float a,b,c,d,e,x1,x2;
scanf(“%f,%f,%f”,&a,&b,&c);
d=b*b-4.0*a*c;
XUAN SHANLI
第三章 C语言的基本控制结构合
肥 工 业 大 学
问题
b*b-4ac<0?
XUAN SHANLI
#include <stdio.h>
#include <math.h>
void main(void)
{
float a,b,c,x1,x2;
scanf(“%f,%f,%f”,&a,&b,&c);
框图:
n e1?
y
n e2?
y
en-1? n
y

肥 stat1; stat2; statn-1; statn;
else statn;
出口


大 n-1个条件,满足某个条件,执行对应的语句,然后到出口。

if else if结构举例: ①征税问题: 1000以下税率为3%
1000~2000税率为4%
实例
>
大于
a>b
>=
大于等于
a>=b

<
小于
2<1
<=
小于等于
c<=d

==
等于
1==c

!=
不等于
1!=3



关系运算规则:参加运算的表达式的从左到右按关系运算 符提供的关系进行比较,满足关系得到整型值1 , 不满足关系 得到整型值0。
int a=1,b=3,c,d; c=a>b ; /*c的值为0*/ d=a+2<=b+3; /*d的值为1*/
格式: switch (expression)
{
nA型符-1N,型个整S但表表型I一达达字标般式式符准只。的型允能值常许是不量为整能表任型相达何或等式类字。。
case 常量表达式1: statement 1;

else if (a>=60) printf(“The score is D”);
大 else printf( “The score is E”); 学 }
chp3ex1
⑷ if语句的嵌套 对于如下的结构:
如求符号函数: -1 (x<0)
y= 0 (x=0)
if(e1) stat1;
1 (x>0) 在stat1或stat2中又含有if结构:
XUAN SHANLI
合 注: >、>=、<、<= 的优先级别相同,==、!=的优先级别相同,
前四种级别高于后两种;

关系运算符的优先级低于算术运算符; 关系运算符的优先级高于逻辑运算符。




⒉逻辑运算 逻辑运算运算时判断对象真假的运算。运算对象非0代表逻辑 真,是0代表逻辑假。也就是说任何类型的量都有逻辑值。逻辑运 算得到整型值。运算结果为真时,得到整型值1,运算结果为假时, 得到整型值0。

学 putchar(ch); chp3exf
}
⑵ if – else 结构 格式:
if(expression)
stat1; else
语句或复合语句。
stat2;
流程图:
入口 举例:输出| x |
XUAN SHANLI
no
yes
e?
stat2;
stat1;
出口
#include <stdio.h>


x1=(-b+sqrt(b*b-4.*a*c))/(2.0*a); x2=(-b-sqrt(b*b-4.*a*c))/(2.0*a);

printf(“x1=%7.2f\nx2=%7.2f”,x1,x2);

}



一元二次方程根求解算法描述
问题:如何构造条件? 如何根据条件实现不同算法?
XUAN SHANLI
XUAN SHANLI
三种控制结构如下:
⒈顺序结构Sequence 算法描述: f; g; 框图:
入口 f;
⒉选择结构Selection
合 算法描述: if(e)
框图:
入口
f; else
g;
yes
e?
no 肥 工
f;
g业;
g; 出口
大 出口学
⒊循环结构Repetition
⑴当型循环
while c is true
void main(void)
{ int a; scanf (“%d”, &a);
合 肥
if (a>=90) printf( “The score is A”); else if (a>=80) printf(“ The score is B”);

else if (a>=70) printf(“The score is C”);

(ch>=’a’&&ch<=‘z’) | | (ch>=’A’&&ch<=‘Z’)


不是字母的表达 式?

⒋运算的优先级
C 语言允许所有基本类型的量参加同一表达式的运算,也允 许所有类型的运算符出现在一个表达式中。因此,表达式值的类 型如何确定,运算的先后顺序如何确定,必须通过一套规则解决。
XUAN SHANLI
main ( ) {

int x ;

业 scanf ( “%d” , &x);
if (x>=0) printf (“%d” , x);
大 else printf( “%d” , -x);
}

⑶ if –else if结构(多分支)
XUAN SHANLI
格式: if(e1) stat1; else if(e2) stat2; else if(e3) stat3; … else if(en-1) statn-1;

else if(x<3000)

rate=.05; else

rate=.06; printf(“%f ”,x*rate);

}

②输入一个分数,将百分制转化为五分制。
90分以上 打印 A
80---90
打印 B
70---80
打印 C
60---70
打印 D
60 以下
打印 E
XUAN SHANLI
#include <stdio.h>
if(expression)statement;
XUAN SHANLI
流程图:
举例:#include <stdio.h>

yes
void main(void) {

e?
char ch;

no statement;
ch=getchar( ); if(ch>=‘a’&&ch<=‘z’)

ch - =32;

b=temp;
工 }
⒈作为分支和循环的块。 ⒉作为标识符的作用域。
业 printf(“%d,%d”,a,b);
}

学 凡是可以出现单一语句的地方都可以使用复合语句。 复合语句可以嵌套
3.2 关系运算和逻辑运算
⒈关系运算
关系运算是比较两个表达式值的数值相互关系的运算。
XUAN SHANLI
运算符
运算关系


注意:在无法确定优先级时,加()区分。简 化表达式。
肥 工
c=b*=a+2

c=(b*=(a+2))


级别
运算符
结合顺序
1
() [ ] -> .
从左向右
2
!- ++ -- (type) sizeof
从右向左
*&
3
*/%
从左向右
4
+-
从左向右
XUAN SHANLI

5

6级7源自总8表9
<< >> < <= > >=
XUAN SHANLI
03
5
x<3 | | x>=5
表示数值关系的原则: 开放区间用或;
-2<x<3 ? x=4 闭合区间用与。
-2<x&&x<3
-2 0 思考题
3 sqrt(x),代表对x开平方。

⒈判断是否在一、三象限的表达式。

⒉判断是否在如图圆环内的表达式。 ⒊ch为字符变量,判断ch是否为字母的表达式。
⑴运算优先级
第一原则:单目运算的优先级高于双目运算。
第二原则:
算术运算
关系运算
逻辑运算
合 赋值运算肥
工 业 为了便于调整优先级,设置()为最高优先级。相同优先级
存在一个顺序称为结合顺序,结合顺序有从右向左或从左向右。


表达式优先级举例说明:
++a-b>c+d&&a>=b*34






XUAN SHANLI
2000~3000税率为5%
3000以上税率6%
#include <stdio.h> void main(void)
输入收入求应缴税款。
{
XUAN SHANLI
float x ,rate;
scanf(“%f ”,&x);
if(x<1000) rate=.03;
3/100?

else if(x<2000) rate=.04;
no
b2-4ac=0?

yes
no b2-4ac>0?

求等根
yes

求实根
求复根



3.1 程序的三种控制结构
结构化程序设计是软件设计的第三次革命。结构化程序设计的
基础是采用三种程序的控制结构。
1966年BOHM &Jacopini 证明:只要三种控制结构就能表达用 一个入口和一个出口框图所能表达的任何程序逻辑。
== != & ^
从左向右
从左向右
从左向右 从左向右

肥 从左向右
10
|
工 从左向右
11 12
&& ||
从左向右 从左向右

13
?:
大 从右向左
14
= op =
学 从右向左
15
,
从左向右
优先级特例
chp3ex0
⒈自加、自减运算优先级遵循原则: #include <stdio.h>
前置:先运算后引用;
do f
入口
⑵直到循环
do f until c is false
XUAN SHANLI
c?
YES
f
NO
出口
f
YES
c?
NO
三种控制结构有如下共同的特点: ❖一个入口和一个出口; ❖无死语句; ❖无死循环。
合 肥 工 业 如何构
造条件 ?
大 学
复合语句 概念:C语言可以用{ }包括一系列的语句。一对{ }所包含的
内容称为一个复合语句。其中可以包含0到多条C语言语句。
#include <stdio.h>
void main (void)
{ int a,b;
XUAN SHANLI
scanf(“%d,%d”,&a,&b);
复复 合合 语语 句句
{
交换算法演示
int temp; temp=a; a=b;

复合语句的作用:
运算符
逻辑关系
举例
XUAN SHANLI
&&
逻辑与
a>2&&a<3
||
逻辑或
s<2| |s>6

!
逻辑非
!a

其中,!运算是单目运算。

若a=4,则!a 的值为0; 若a=4,b=5,则a&&b 的值为1

逻辑运算演示


⒊复杂逻辑关系的表示 在实际应用中,经常会遇到描述复杂的关系。如:判断 x是否 大于等于5或小于3。此类关系的描述在程序设计中会大量使用。
可以嵌if 套(x<。0) y=-1; else

y=-1; if (x!=0)
工 外
if (x==0) 在外层else
层 内 y=0; 语句中,含有一
业 层 else
个if结构。
if (x>0) y=1;
else y=0;
结果?
y=1;

学 printf (“x=%d,y=%d\n”,x,y) ;
else
工 求不等实根。 业
大 层 {printf(“\nx1=%f+i %f”,-b/(2.0*a),sqrt(-d)/(2.0*a)); printf(“\nx2=%f - i %f”,-b/(2.0*a),-sqrt(-d)/(2.0*a));}
} }
学 求共扼复根。
⒉switch语句(多分支结构)

a=0;

a&&++b;/*b的值?*/

3.3 分支结构(选择结构Selection)
由标准的分支结构可以演化成单分支、多分支结构。C语言的分
支语句有if 、if – else、switch三种。
相关文档
最新文档