选择结构
if语句(可嵌套)
if-else
int Age;
printf("请输入你的年龄:");
scanf("%d", &Age);
if (Age >= 18)//括号里放判定条件
{printf("身份认证成功\n");}//若if()的条件成立,执行{}里面的内容
else {printf("身份认证失败,剩余游戏时间1.5小时\n");}//若if()的条件不成立,
执行else()的内容
if-else if
int score;
printf("请输入学生成绩:\n" );
scanf("%d", &score);
if (score >= 90)
{
printf("成绩优秀\n");
}
else if (score >= 80)
{
printf("成绩良好\n");
}
else if (score >= 60)
{
printf("成绩合格");
}
else { printf("成绩不合格\n"); }
else子句是if语句的一部分,和if配套使用,不单独使用。if语句嵌套使用时,else和if的匹配原则:else和它上面的、最近的且尚未匹配的if配对。可以参考下面两段代码
int score;
printf("请输入学生成绩:\n");
scanf("%d", &score);
if (score >= 60)
printf("成绩合格\n");
if (score >= 90)
printf("成绩优秀\n");
else
printf("成绩不及格\n");
/*输入成绩75时,返回的结果是:
成绩合格
成绩不合格
*/
//我们给这段代码加上{}再运行
int score;
printf("请输入学生成绩:\n");
scanf("%d", &score);
if (score >= 60)
{printf("成绩合格\n");
if (score >= 90)
printf("成绩优秀\n");}
else
printf("成绩不及格\n");
/*输入成绩75时,返回的结果是:
成绩合格
*/
switch语句
int a;
printf("请输入一个数字:");
scanf("%d", &a);
switch (a)//a为表达式
{
case 1: printf("a\n");/*若表达式的值和case后面的常量表达式相同,
就执行case后面的语句,当执行到break或者switch的最后一条语句时,跳出
这个选择*/
case 2: printf("b\n");
case 3: printf("c\n");
case 4: printf("d\n");
default:printf("请重新输入一个数字\n"); /*如果没有case后面的常量
表达式满足条件,就执行default语句*/
}
/*输入数字1时,返回结果为
a
b
c
d
*/
//缺少break语句,不管是否符合case的判定条件,程序都会继续运行下去
int a;
printf("请输入一个数字:");
scanf("%d",&a);
switch(a)
{
case 1: printf("a\n"); break;
case 2: printf("b\n"); break;
case 3: printf("c\n"); break;
case 4: printf("d\n"); break;
default:printf("请重新输入一个数字\n"); break
}
/*输入数字1,返回结果为
a
*/
两种选择方式各有优劣。当条件复杂,比如含有&&、||、!等存在时用if语句比较方便;如果条件简单,但分支很多,那么比较用switch比较合适。
?(条件运算符)
//用法,形如:int c =(a>b)?a:b;
//比如下面这么一段求绝对值的代码
int i;
printf("请输入一个数字:\n");
scanf("%d", &i);
int x = (i < 0) ? -i : i;
printf("%d", x);