1、程序执行的三大流程
● 顺序 : 从上向下, 顺序执行代码 默认就是顺序结构
● 分支 : 根据条件判断, 决定执行代码的分支
● 循环 : 让特定代码重复的执行
2、分支结构
分支结构分为:单分支、双分支和多分支
2.1 单分支(简单的if语句)
简单的if语句基本结构如下:
if(表达式)
{
执行代码块
}
语义:如果表达式结果为真,执行其后的语句,否则不执行
之一:if()后面没有分号
2.2、双分支
1、 if-else语句
if-else语句的基本结构如下:
IF(表达式)
执行代码块1;
ELSE
执行代码块2;
语义:如果表达式的值为真,则执行代码块1,否则执行代码块2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
//1.案例需求:定义个变量 年龄 用户输入年龄 如果年龄大于18,则允许进网吧
/*int age;
printf("请输入用户的年龄:");
scanf("%d", &age);
if (age > 18) {
printf("允许进网吧\n");
}
printf("end\n");*/
/*定义一个年龄变量,如果年龄大于18岁,则允许进网吧,否则,回家写作业*/
/*int age;
printf("请输入用户的年龄:");
scanf("%d", &age);
if (age > 18) {
printf("允许进网吧\n");
}
else {
printf("回家写作业\n");
}
printf("end\n");*/
//比较三个数大小,输出最大值
//int a, b, c;
//printf("请输入三个数:");
//scanf("%d %d %d", &a, &b, &c);
//int max = a;//假设a是最大值
// if (max < b) {
// max = b;
//}
//if (max < c) {
// max = c;
//}
// 这个编写是不正确的
//if (max < b) {
// max = b;
//}else {
// max = c;
//}
/*printf("max=%d\n", max);*/
/*案例需求:*/
//天猫双十一,推出优惠活动:
//○ 购物满 50 元,打 9 折;
//○ 购物满 100 元,打 8 折;
//○ 购物满 200 元,打 7 折;
//○ 购物满 300 元,打 6 折;
//编程计算当购物满 s 元时,实际付费多少?
double s,payMoney;
printf("请输入您购物的钱数:");
scanf("%lf", &s);
//s >= 50&&s<100正确 50<=s<100 错误
/*if (s >= 50&&s<100) {
}*/
if (s >= 300) {
payMoney = s * 0.6;
}
else if (s >= 200) {
payMoney = s * 0.7;
}
else if (s >= 100) {
payMoney = s * 0.8;
}
else if (s >= 50) {
payMoney = s * 0.9;
}
else {
payMoney = s;
}
printf("payMoney=%.2lf\n", payMoney);
return 0;
}
/*
流程控制: 控制程的执行顺序
三大类:
(1)顺序结构
(2)分支结构***
单分支
if(条件判断){
条件成立: 执行此代码块
}
双分支
if(条件判断){
条件成立: 代码块1
}else{
条件不成立: 代码块2
}
if if if...else
多分支
if(条件1){
条件1成立: 代码块1
}else if(条件2){
条件1不成立,但是条件2成立: 执行代码块2
}else if(条件3){
条件1 2都不成立,但是条件3成立: 执行代码块3
}
...
else{
以上条件都不成立,执行才代码
}
(3)循环结构
*/
2.3、三目运算符(双分支结构的一种)
三目运算符的结构:
表达式1?表达式2:表达式3;
执行过程:先判断表达式1是否为真,如果为真,执行表达式2,否则执行表达式3;
//三目运算符
//案例修改:使用三目运算符,请输入两个数,然后输出两个数的较大者
int a, b;
printf("请输入两个数:");
scanf("%d %d", &a, &b);
a > b ? printf("%d\n", a) : printf("%d\n", b);
return 0;
2.4、多分支
2.4.1、多重if-else语句
多重if-else语法结构如下:
IF(表达式1)
执行代码块1;
IF(表达式M)
ELSE
执行代码块M;
ELSE
执行代码块N;
语义:依次执行表达式的值,当出现某个值为真时,则执行对应的代码块,否则执行代码块n
注意:当某一条件为真时,就不会向下执行该分支结构的其他语句
2.4.2、switch多分支语句
●测试一个表达式是否等于一些可能的值,并根据表达式的值执行相应的代码块,可以使用switch语言实现
● switch可以支持数据类型:
○ int
○ 枚举类型
○ char类型
● switch和if区别:
○ 需要根据布尔条件来执行不同的代码块,则应使用if语句
○需要根据表达式的值来执行不同的代码块,则应使用switch语句
switch的语法格式:
/*switch多分支:
switch(表达式的值){
case value1:
代码块1;
break;
case value2:
代码块2;
break;
......
deafult:
以上代码都不成立执行 代码块n
}
注意:switch 仅用于检查变量与一组常量值是否相等 ,switch 语句不能直接用于范围比较(如 score > 90)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
//案例需求:输入不同的int类型数,返回星期数
// ● 输入int类型的数据, 根据结果输出不同的内容
// ○ 输入1:输出Monday
// ○ 输入2:输出Tuesday
// ○ 输入3:输出Wednesday
// ○ 输入4:输出Thursday
// ○ 输入5:输出Friday
// ○ 输入6:输出Saturday
// ○ 输入7:输出Sunday
// ○ 输入其它:输出error
int num;
printf("请输入1~7的数字:");
scanf("%d", &num);
switch (num) {
case 1:
printf("Monday");
break;
case 2:
printf("Tuesday");
break;
case 3:
printf("Wednesday");
break;
case 4:
printf("Thursday");
break;
case 5:
printf("Friday");
break;
case 6:
printf("Saturday");
break;
case 7:
printf("Sunday");
break;
default:
printf("error,请重新输入1~7");
break;
}
return 0;
}
/*
switch分支 可以和 if else if else if else 互转的
比较大小 (区间性质的 建议用 if elseif)
有固定的值的 建议用switch
//变量 是最基本的表达式 res= a+b 大部分放一个变量
// 等于 千万不能忘记 break
switch(表达式){
case 值1:
代码块1;
break;
case 值2:
代码块2;
break;
.....
default:
以上条件都不成立,才执行
[break];
}
case 1: case 2: case 3:
代码块
*/