一、流程控制的三种结构:
顺序结构
分支结构
循环结构
(1)顺序结构:代码一路顺下来
(2)分支结构:选择
根据条件—>做出判断——>做出选择
构造条件则需要用到关系运算和逻辑运算,而关系运算是逻辑运算中比较简单的一种
二、关系运算
2.关系表达式
关系表达式的值是一个逻辑值,即“真”或“假 。
例如,关系表达式"5==3" 的值为“假",“ 5>=0"的值为“真”。
总结:
关系运算的结果 只有 0 或 1 ,这个结果 用int型来存储的
三、逻辑运算
逻辑运算实际是表示表达式之间的关系
例如(表达式1 && 表达式2 )
1.逻辑运算符
&& 逻辑与
规则: 一假则假
|| 逻辑或
规则: 一真则真
! 逻辑非
规则: 真假相对
注意:
&& 和 || 具有截断特性(短路特性) :
即在逻辑运算中,优先算左边的表达式,如果左边表达式能直接确定整个表达式结果,则无需再运算右边表达式。
三、if 语句
1.形式一:if(表达式)语句
...
if (表达式)
{
语句
} //复合语句
···
语义:
如果 表达式 为真
则 执行 if 下的 语句 ,语句执行完后,继续执行if后的代码
如果 表达式 为假
则 跳过 if 下的 语句,执行if语句后面的代码
注意:if 后面没有分号(;)
二、形式二:双分支
...
if ( 表达式)
{
语句1
}
else
{
语句2
}
....
语义:
练习1:
从键盘输入两个数,
找出最大值
#include<stdio.h>
int main(void)
{
int n1,n2,max;
printf("Please:");
scanf("%d %d,&n1,&n2);
if (n1 > n2)
{
printf("max = %d\n",n1);
}
else
{
printf("max = %d\n",n2);
}
return 0;
}
练习2:
找出三个数中的最大值
#include<stdio.h>
int main(void)
{
int n1,n2,n3,max;
printf("Please:");
scanf("%d %d %d",&n1,&n2,&n3);
if (n1 > n2)
{
max = n1;
}
else
{
max = n2;
}
if (n3 > max)
{
max = n3;
}
printf("max = %d\n",max);
return 0;
}
3.形式三
···
if( 表达式1)
语句1
else if( 表达式2)
语句2
else if( 表达式3)
语句3
else if( 表达式m)
语句melse
语句n
语义:
注意:每个判断的 if 后面不要写分号
练习3:
从键盘上输入一个学生分数
打印出对应等级 分数
A - 90 ~ 100
B - 80 ~ 89
C - 70 ~ 79
D - 60 ~ 69
E - <60
#include<stdio.h>
int main(void)
{
int n;
printf("please:");
scanf("%d",&n);
if (n <= 100 && n >= 90)
{
printf("A\n");
}
else if(n >= 80 && n <90)
{
printf("B\n");
}
else if(n >= 70 && n <80)
{
printf("C\n");
}
else if(n >= 60 && n <70)
{
printf("D\n");
}
else if(n >= 0 && n <60)
{
printf("E\n");
}
else
{
printf("Stupid!\n");
}
return 0;
}
四、switch 语句
语法格式:
switch (整型表达式)
{
case 常量表达式1:
语句1
break;
case 常量表达式2:
语句2
break;
case 常量表达式D:
语句n
break;
default :
语句n+l
break;
}
语义:
首先,求解"表达式"
根据表达式的结果 ,
到下面case后依次进行匹配,
如果与case 后的常量表达式的值一致,
则匹配成功,
执行该case下面的"语句"
直到遇到了 break
或 switch 的右花括号 }
注意:
1.switch后 "表达式" ---结果不能是 浮点型
2.case 后面 是常量表达式,不能出现变量
3.default 写错 没有语法问题,但是达不到程序效果