程序结构——(选择结构)
选择结构
一、if 语句和用 if 语句构成的选择结构
if 的语法格式:
if(任意的常量、变量、表达式)
{
a;
b;
}
C;
注意:若 if 中的表达式是0:False,若 if 中的表达式非0:True
#include<stdio.h>
int main()
{
int score;
scanf("%d",&score); // 50
if(score>=60)
{
printf("合格\n");
}
else
{
printf("不合格\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int score;
scanf("%d",&score);
if(score<60)
{
printf("不合格\n");
}
else
{
if(score>=90)
{
printf("优秀\n");
}
else
{
printf("合格\n");
}
}
return 0;
}
注意:if else 的配对原则:★★★★
else 只跟在 else 前面的、离 else 最近的、还没有配对 if 进行配对(就近原则)
★★★★
如果 if 省略后面的 {} , if 和 else 只认紧跟其后的第一条语句才是 if 和 else 中的语句(注意:if 与 else 后面不加 “;”,一旦加了 “;” 则意味着 if 或 else 后跟着一个空语句),if 和 else是属于2选1 的选择结构 ,既不能实现2选2,也不能实现2选0
示例:判断年份是平年还是闰年:
//判断年份是平年还是闰年:
#include<stdio.h>
int main()
{
int year;
scanf("%d",&year);
if(year%400==0 || (year%4==0 && year%100!=0))
{
printf("闰年\n");
}
else
{
printf("平年\n");
}
return 0;
}
示例:输入一个分钟数,判断这个分钟数等价于几小时几分钟
//输入一个分钟数,判断这个分钟数等价于几小时几分钟
#include<stdio.h>
int main()
{
int min, h, m; //h(小时) m(分钟)
scanf("%d", &min); //200
h = min/60;
m = min-min/60*60; //或 m = min%60 m = min-h*60
printf("%d小时%d分钟\n", h, m); //3小时20分钟
return 0;
}
二、条件表达式构成的选择结构
1、 条件运算符★★★
条件运算符由两个运算符号组成,它们是:( ? : )这是C语言提供的唯一的一个三目运算符
2、由条件运算符构成的条件表达式
形式如下:
表达式1 ? 表达式2 : 表达式3;
3、条件表达式的运算功能
当 “表达式1” 的值非零时,求出 “表达式2” 的值,此时 “表达式2” 的值就是整个条件表达式的值;
当 “表达式1” 的值为零时,求出 “表达式3” 的值,此时 “表达式3” 的值就是整个条件表达式的值;
代码:
#include<stdio.h>
int main()
{
int x=6, y=5, max;
if(x > y)
{
max = x;
}
else
{
max = y;
}
printf("%d\n", max);
return 0;
}
等价于
#include<stdio.h>
int main()
{
int x=6, y=5, max;
max=x>y ? x : y;
printf("%d\n", max);
return 0;
}
三、switch语句以及用switch语句和break构成的选择结构
switch语句形式如下:
switch(表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
……
case 常量表达式n: 语句n
default: 语句n+1
}
代码:
#include<stdio.h>
int main()
{
int score;
scanf("%d",&score); // 5优秀 4良好 3及格 0--2不及格
switch(score)
{
case 5:
printf("优秀\n");
case 4:
printf("良好\n");
case 3:
printf("合格\n");
default: //默认当所有的case条件都不匹配时,会自动执行default标号后的语句
printf("不合格\n");
}
return 0;
}
在switch语句体中使用break语句:
#include<stdio.h>
int main()
{
int score;
scanf("%d", &score); // 5:优秀 4:良好 3:合格 0--2 不合格
switch(score)
{
case 5:
printf("优秀\n");
break; // 终止switch的执行,跳出switch{} 执行switch{}后面的语句
case 4:
printf("良好\n");
break;
case 3: //case后面只能出现常量表达式,不能出现变量
printf("合格\n");
break;
default:
printf("不合格\n");
}
return 0;
}