<C> 分支 - 2107/11/11
C语言是面向过程:
事情1 事情2 事情3 --> 顺序结构
1. if语句:
1.1. 格式:
a) 单独一个if
if(条件) // 条件可以关系运算符 逻辑运算符 数字 { // 如果条件成立 要执行的语句 }
如:
if(饿) { 吃饭; }
b) if else
心情好吃大餐 心情不好 吃炒饭
如:
if(心情好) { 吃大餐; // 条件为真 执行的语句 } else { 吃炒饭; // 条件为假 执行的语句 {
1.2.嵌套部分
如:
// 能不能先判断饿不饿,不饿输出不吃,饿再判断心情好不好了,好吃大餐,不好吃炒饭 if(饿) { if(心情好) { printf_s("好吃大餐"); } else { printf_s("吃炒饭"); } } else { printf_s("不吃"); }
1.3 省略
1.3.1 else 部分如果没有就可以不要
1.3.2 { } 可以省略
--> if 后面的语句只有一句 有分号 // 建议不要省略
1.3.3 分号 表示语句结束
如:
if(饿); // if后面没有匹配任何语句
1.3.4 if {} 定义变量的问题 在一个{}中定义的变量出了{}就不能使用了
1.3.5 if else if else
if(饿) //条件1 { printf_s("不吃"); // 条件1成立就执行 } else if(心情好) // 条件2 { printf_s("好吃大餐"); // 条件1不成立 条件2成立 } ....//条件3 else { printf_s("吃炒饭"); }
2. switch语句:
有些情况用switch 比 if 方便
让用户输入数字 打印出对应的星期几
int day; // 日期 // 输入整数 if(day==1) { printf_s("今天是周一"); } else if(day==2) { printf_s("今天是周二"); } else if(day=3) { printf_s("今天是周三"); } else if(day==4) { printf_s("今天是周四"); } else if(day==5) { printf_s("今天是周五"); } .... else { printf_s("输入错误!"); }
// 像上面这种有多个可能的取值 可以-- 枚举出来 可以用switch代替
switch(变量) { case 1:printf("今天是周一");break; case 变量可能的取值:如果取到这个值的时候执行的语句;break; //....... default://如果上面case都没有执行 执行这一句 printf_s("输入错误"); break; }
2.1 要不要加 break
遇到匹配的case之后 执行后面的语句 直到break为止
2.2 default 要不要
default 可以要可以不要
default 可以放到任意位置
2.3 default 要不要 break
default 放最后可以不用加break
2.4 swicth 中的变量类型 可以整型或者字符
case 后面只能是整型或者字符 常量
3.5 不要在case里面
#include <stdio.h> int main() { #if 0 // if语句 int x; // 计算x的绝对值 scanf_s("%d", &x); // 相当于给x赋值 x=-56 if (x < 0) // 如果x小于0 那么x是负数 -->取负 { x=-x; } printf("%d\n",x); #elif 0 // 输入最大值 x y int x, y; printf("请输入两个数:\n"); scanf_s("%d%d", &x, &y); if (x > y) // 如果x大于y 就输出x { printf_s("输出x的最大值:%d\n", x); } else { printf_s("输出y的最大值:%d\n", y); } #elif 0 // 输出最大值: x y n int x, y, n; // 定义三个变量 printf_s("请输入三个数字:\n"); scanf_s("%d%d%d", &x, &y, &n); //获取x y n 的值 if (x > y) { if (x > n) // 比较x和y中比较大值和n { // x是最大值 printf_s("%d\n", x); } else { printf_s("%d", n); } } else { if (y > n) { printf_s("%d", y); } else { printf_s("%d", n); } } /* // && 逻辑与 if (x > y&&x > n) { printf_s("%d", x); } else if (y > n && y > x) { printf_s("%d", y); } else { printf_s("%d", n); } */ #elif 1 // switch int x; printf_s("请输入一个数字: \n"); scanf_s("%d", &x); for (int i = 1; i < x; i++) { switch (i) { case 1:printf_s("今天是周一\n"); break; case 2:printf_s("今天是周二\n"); break; case 3:printf_s("今天是周三\n"); break; case 4:printf_s("今天是周四\n"); break; case 5:printf_s("今天是周五\n"); break; case 6:printf_s("今天是周六\n"); break; case 7:printf_s("今天是周日\n"); break; default: printf_s("输入错误!"); break; } } /* x = getchar(); // 获取到一个字符 switch (x) { case '1':printf_s("今天是周一\n"); break; case '2':printf_s("今天是周二\n"); break; case '3':printf_s("今天是周三\n"); break; case '4':printf_s("今天是周四\n"); break; case '5':printf_s("今天是周五\n"); break; case '6':printf_s("今天是周六\n"); break; case '7':printf_s("今天是周日\n"); break; default: printf_s("输入错误!"); break; } */ #endif getchar(); return 0; }