C_流程控制_选择 笔记
选择
1.定义
有些代码执行,也可能代码不执行,有选择地执行某些代码
2.分类
if
switch
选择_if
1.if最简单的用法
if (表达式)
语句;
功能: 如果表达式为真,则执行语句;否则不执行
代码举例
1 //三数排序 2 #include <stdio.h> 3 4 int main() 5 { 6 int a,b,c; 7 int x; 8 9 printf("输入三个整数:"); 10 scanf("%d%d%d",&a,&b,&c); 11 12 if(a<b) //若a小于b,a与b的值互换 13 { 14 x=a; 15 a=b; 16 b=x; 17 } 18 19 if(a<c) //若a小于c,a与c的值互换 20 { 21 x=a; 22 a=c; 23 c=x; 24 } 25 26 if(b<c) //若b小于c,b与c的值互换 27 { 28 x=c; 29 c=b; 30 b=c; 31 } 32 33 printf("\n%d,%d,%d",a,b,c); 34 35 return 0; 36 }
2.if的范围(重点)
①if默认的只能控制一条语句的执行,如果想执行多条语句,需用大括号括起来
②控制多条语句的格式
if (表达式)
{
语句A;
语句B;
}
3. if…else…的用法
①格式
if (表达式)
语句A;
else
语句B;
②注意,else默认也只能控制一个语句(执行多条语句的方法和if一样),且语句A和语句B不能同时执行
4. if…else…if…else的用法
①格式
if(表达式)
语句A;
else if(表达式)
语句B;
else
语句C;
注意:
①如何控制多条语句的执行同if一样
②else…if的数量可增加
③语句A,B,C只能执行其中一条
5.C语言对于真假的判断
非零是真
零即是假
真用1表示
假用0表示
6.程序
①注意: 表达式不可写成"a<x<b"的形式,应写成"x>a&&x<b"的形式
if常见问题解析
1.空语句的问题
if (3>2);
等价于
if (3>2)
; //这是一个空语句
所以一般情况下if的表达式后面不能加";"
选择_switch
1.格式
switch(表达式)
{
case 常量表达式A:
语句1;
break;
case 常量表达式B;
语句2;
break;
default:
语句N;
}
2.用法
①break表示退出。例如若语句1后没有break,则也要执行语句2。即从开始执行到break结束。
②default可以出现在任何位置,也可以没有,但建议写在末尾,表示除去case匹配的其他情况。
③有些书籍中也把switch当做选择结构
④注意:case标签必须是常量表达式(constant Expression) 只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
(补充)常量表达式(const experssion):是指(1)值不会改变 并且 (2)在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。
一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。
例子:
const int a =1; //常量表达式
cosnt int b=a+1; //常量表达式
int c=2; //初始值是字面值常量,当c数据类型是普通int。
const int d=fun(); //fun()值要在运行时得到,d不是字面值常量
3.格式举例
switch(1+1) { case 1: printf("1\n"); break; case 2: printf("2\n"); printf("..."); break; default: printf("。。。"); }
输出结果:
2
...
4.程序举例
1 #include<stdio.h> //微型计算器 2 3 int main(void) 4 { 5 float x,y; 6 float a; 7 char b; 8 9 scanf("%f%c%f",&x,&b,&y); //输入需要运算的两个数及运算符号 10 11 switch(b) //判断输入的是哪种符号并进行相应运算 12 { 13 case '+': 14 a=x+y; 15 break; 16 17 case '-': 18 a=x-y; 19 break; 20 21 case '*': 22 a=x*y; 23 break; 24 25 case '/': 26 a=x/y; 27 break; 28 } 29 30 printf("=%f",a); 31 32 return 0; 33 34 }