条件语句用来根据不同的条件来执行不同的语句,C语言中常用的条件语句包括if语句和switch语句。
if 语句
语法格式:
if (条件) {
条件成立时,要做的事
……
}
案例需求:
- 定义一个整数变量记录年龄
- 判断是否满 18 岁 (>=)
- 如果满 18 岁,允许进网吧嗨皮
示例代码:
#include <stdio.h>
int main() {
// 定义一个整数变量记录年龄
int age;
printf("请输入年龄:");
scanf("%d", &age);
// 判断是否满 18 岁 (>=)
if (age >= 18) {
// 如果满 18 岁,允许进网吧嗨皮
printf("允许进网吧嗨皮\n");
}
return 0;
}
if…else 语句
基本语法
语法格式:
if (条件) {
条件成立时,要做的事
……
} else {
条件不成立时,要做的事
……
}
案例需求:
- 定义一个整数变量记录年龄
- 判断是否满 18 岁 (>=)
- 如果满 18 岁,允许进网吧嗨皮
- 否则,提示回家写作业
示例代码:
#include <stdio.h>
int main() {
// 定义一个整数变量记录年龄
int age;
printf("请输入年龄:");
scanf("%d", &age);
// 判断是否满 18 岁 (>=)
if (age >= 18) {
// 如果满 18 岁,允许进网吧嗨皮
printf("允许进网吧嗨皮\n");
} else {
// 否则,提示回家写作业
printf("回家写作业\n");
}
return 0;
}
三目运算符
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
?! | 三目运算符 | a>b?a:b | – |
示例代码:
#include <stdio.h>
int main() {
// 通过三目运算符求2个数的最大值
int a = 10;
int b = 20;
int c = a > b ? a : b;
printf("最大值:%d\n", c);
return 0;
}
if…else if…else语句
语法格式:
if (条件1) {
条件1成立时,要做的事
……
} else if(条件2) {
条件2成立时,要做的事
……
} else {
条件不成立时,要做的事
……
}
案例需求:
- 天猫超市双 11 推出以下优惠促销活动:
- 购物满 50 元,打 9 折;
- 购物满 100 元,打 8 折;
- 购物满 200 元,打 7 折;
- 购物满 300 元,打 6 折;
- 编程计算当购物满 s 元时,实际付费多少?
示例代码:
#include <stdio.h>
int main() {
// 1.定义变量记录购买金额 定义变量记录实际费用
float money, real_money;
// 2.输入购买金额
printf("请输入购买金额:");
scanf("%f", &money);
// 3.根据购买金额判断折扣
if (money >= 50 && money < 100) {
// 购物满 50 元,打 9 折;
real_money = money * 0.9;
} else if (money >= 100 && money < 200) {
// 购物满 100 元,打 8 折;
real_money = money * 0.8;
} else if (money >= 200 && money < 300) {
// 购物满 200 元,打 7 折;
real_money = money * 0.7;
} else if (money >= 300) {
// 购物满 300 元,打 6 折;
real_money = money * 0.6;
} else {
// 不满50 原价
real_money = money;
}
printf("购买金额: %f 实际价格: %f\n", money, real_money);
return 0;
}
优化后的代码:
#include <stdio.h>
int main()
{
// 1.定义变量记录购买金额 定义变量记录实际费用
float money, real_money;
// 2.输入购买金额
printf("请输入购买金额:");
scanf("%f", &money);
// 3.根据购买金额判断折扣
if (money >= 300) {
// 购物满 300 元,打 6 折;
real_money = money * 0.6;
} else if (money >= 200) {
// 购物满 200 元,打 7 折;
real_money = money * 0.7;
} else if (money >= 100) {
// 购物满 100 元,打 8 折;
real_money = money * 0.8;
} else if (money >= 50) {
// 购物满 50 元,打 9 折;
real_money = money * 0.9;
} else {
// 不满50 原价
real_money = money;
}
printf("购买金额: %f 实际价格: %f\n", money, real_money);
return 0;
}
switch语句
- 测试一个表达式是否等于一些可能的值,并根据表达式的值执行相应的代码块,可以使用switch语言实现
- switch可以支持数据类型:
- int
- 枚举类型
- char类型
- switch和if区别:
- 需要根据布尔条件来执行不同的代码块,则应使用if语句
- 需要根据表达式的值来执行不同的代码块,则应使用switch语句
语法格式:
switch (expression) {
case value1:
// 代码块1
break;
case value2:
// 代码块2
break;
default:
// 代码块3
}
案例需求:
- 输入int类型的数据,根据结果输出不同的内容
- 输入1:输出Monday
- 输入2:输出Tuesday
- 输入3:输出Wednesday
- 输入4:输出Thursday
- 输入5:输出Friday
- 输入6:输出Saturday
- 输入7:输出Sunday
- 输入其它:输出error
示例代码:
#include <stdio.h>
int main() {
// 1. 定义变量保存数据
int i;
// 2. 输入数据
printf("请输入1~7的数字:");
scanf("%d", &i);
// 3. 使用switch根据数据不同输出不同的结果
switch (i) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("error\n");
}
return 0;
}
分支综合案例
案例需求:
- 输入:年份(整数)和月份(整数)
- 输出:该月份的天数(整数)
思路分析:
1.定义变量保存年份、月份、天数
2.输入年份和月份
3.根据月份输出天数
1、3、5、7、8、10、12月 31天
4、6、9、11月 30天
2月 非闰年 28天 闰年 29天
闰年判断:能被4整除,但不能被100整除的;或者能被400整除的年份
示例代码:
#include <stdio.h>
int main() {
// 1.定义变量保存年份、月份、天数
int year, month, day;
// 2.输入年份和月份
scanf("%d %d", &year, &month);
// 3.根据月份输出天数
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
// 2月 非闰年 28天 闰年 29天
// 闰年判断:能被4整除,但不能被100整除的;或者能被400整除的年份
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
day = 29;
} else {
day = 28;
}
break;
default:
day = -1;
}
printf("%d 年 %d 月 有 %d 天\n", year, month, day);
return 0;
}