#include // std 标准 io ----> input output 输入 输出 printf scanf getchar ......
#include // system libary库
//预处理命令 可以当做注释用
#if 0 //#if 条件 如果调件满足 后面的这段程序会被编译
#elif 1 //else if条件2
#else // else
#endif // 作为结束的标记
一、c语言中有三大流程
1、顺序结构 从上往下 依次执行 最基础的结构
例如:
将下列语句 依次执行 输出
2、循环结构 就是一个一直执行的过程
比如:一直吃 就是循环
3、分支结构 就是一个带有选择性的
比如:“你今天吃饭还是不吃饭?” 根据当前情况进行选择 吃或者不吃就是分支
二、分支
分支
1、if else
> < = !=
! && ||
数字也可以作为条件
格式:
if(饿){吃;}//只有if没有else
if(条件)(语句1)//有if和else
else(语句2)
嵌套 if的()或者else的()里面还有if--->嵌套
if(条件1){语句2} //多层分支
else if(条件2){语句2}//可以有多个else if
......
else if(条件n){语句n}
else {语句}
先判断if if成立执行语句1 直接跳出
if不成立 判断else if 语句2 条件2成立执行语句2
注意点:
1、有if不一定有else 但是有else必定有if
2、if 语句后面不要加分号
如果if满足不执行任何语句可以加分号
3、关于{}的省略
不加{} if只匹配离他最近的一句
如果{}只有一句 那么可以省略{}
刚刚开始写 不熟练就不要省略了
4、条件的写法
if(20==x) 涉及到 == 的时候 常量放左边 避免少写=
最简单的例子:
如上图的程序 因为x=1,不满足x>2的条件 所以直接执行后面的语句
如果改为x=3则会执行 括号里面的语句
有else的语句://else是可以省略的
所以 条件不同时 就会执行不同的语句
条件嵌套例子;
当前语句会执行49行这一句
改变一下条件 男士改为女士
当前会执行第53行的语句
多层嵌套;
在改代码中 一个 = 表示赋值 == 表示等于
根据设置断点 逐语句调试 最终执行的是第85行代码 然后跳出循环
用数字做判断条件 0为假 其他数字为真
因为条件为假 所以不执行里面的语句
如果在if后面加分号
他就会直接执行后面的语句
所以 if(o); 就等价于 if(0){}
有关{}的省略
省略{}后
说明 if 只控制第一句
2、switch
用于枚举出所有的选项
格式;
switch(变量)
{括号不能省略
default: 语句;break;//可以放在其他位置 也可以省略
case 常量1;break;
case 常量2;break;
...
}
//比较case后面的常量的值 和变量的值 相等就执行
都不相等 就执行default
所有可能的选项都能列举出来就用switch (可以和枚举搭配)
所有分支全部可以用if,但是某些情况下switch更加简洁
注意 1:default可以放任何地方 也可以不写 但是一个switch里面只能有一个default
2:case后面的值不能相同 case后面只能是整型和单个字符 不可以是 小数和字符串(中文算字符串)
3:break case和default后面
先匹配对应的case 或者default 然后一直往后执行 直到遇到break结束
例如:
当我们删除后面的break时
之所以会输出这样的结果是因为 当代码week=5 匹配到第138行时 开始执行 但是因为138行的break没有的 所以不会停下来 继续往后面执行 知道遇到break时调出循环
所以会打印出两个结果
三目 也可以作为分支
?:
if(条件){语句1;}
else{语句2;}
条件?语句1:语句2 // 稍微简单点
x=3>4?3:4;
等价于
if(3>4){x=3;}
else{x=4;}
同一个问题 两种处理方式 上面的是if else语句 下面的是三目运算
调试代码如下:
1 /*
2 1、顺序结构 从上往下 依次执行
3 2、循环结构 一直吃
4 3、分支结构 吃或者不吃
5
6
7 分支
8 1、if else
9 > < = !=
10 ! && ||
11 数字也可以作为条件
12
13 格式:
14 if(饿){吃;}//只有if没有else
15
16 if(条件)(语句1)//有if和else
17 else(语句2)
18
19 嵌套 if的()或者else的()里面还有if--->嵌套
20
21 if(条件1){语句2} //多层分支
22 else if(条件2){语句2}//可以有多个else if
23 ......
24 else if(条件n){语句n}
25 else {语句}
26 先判断if if成立执行语句1 直接跳出
27 if不成立 判断else if 语句2 条件2成立执行语句2
28
29 注意点
30 1、有if不一定有else 但是有else必定有if
31 2、if 语句后面不要加分号
32 如果if满足不执行任何语句可以加分号
33 3、关于{}的省略
34
35 2、switch
36 格式;
37
38 switch(变量)
39 { 括号不能省略
40 default:语句;break;//可以放在其他位置 也可以省略
41 case 常量1;break;
42 case 常量2;break;
43 ...
44 }
45 //比较case后面的常量的值 和变量的值 相等就执行
46 都不相等 就执行default
47
48 所有可能的选项都能列举出来就用switch (可以和枚举搭配)
49 所有分支全部可以用if,但是某些情况下switch更加简洁 三目也简单
50
51 注意 1:default可以放任何地方 也可以不写 但是一个switch里面只能有一个default
52 2:case后面的值不能相同 case后面只能是整型和单个字符 不可以是 小数和字符串(中文算字符串)
53 3:break case和default后面
54 先匹配对应的case 或者default 然后一直往后执行 直到遇到break结束
55
56 三目 也可以作为分支
57 ?:
58
59 if(条件){语句1;}
60 else{语句2;}
61 条件?语句1:语句2 // 稍微简单些
62 x=3>4?3:4;
63
64 等价于
65
66 if(3>4){x=3;}
67 else{x=4;}
68
69 */
70
71 #include
72 int main()
73 {
74
75 /*
76 int weight = 103;
77 char sex = 'W';
78 if (weight <=100)//条件满足 执行()中的语句
79 {
80 printf("吃饭\n");//语句1
81 }
82 else//条件不满足 执行else中的语句 else是可以省略的
83 {
84 if (sex == 'M')//男士
85 {
86 printf("吃饭\n");//体重大于100 并且sex是男士
87 }
88 else
89 {
90 printf("节食\n");
91 }
92
93 }
94 */
95
96 /*
97 int week = 5;//表示周五
98 if (week == 1)
99 {
100 printf("周一\n");
101 }
102 else if(week==2)
103 {
104 printf("周二\n");
105 }
106 else if (week == 3)
107 {
108 printf("周三\n");
109 }
110 else if (week == 4)
111 {
112 printf("周四\n");
113 }
114 else if (week == 5)
115 {
116 printf("周五\n");
117 }
118 else if (week == 6)
119 {
120 printf("周六\n");
121 }
122 else if (week == 7)
123 {
124 printf("周末\n");
125 }
126 else//当上面的条件全部不成立的话就执行该语句
127 {
128 printf("输入错误!!!\n");
129 }
130 */
131
132 /*
133 if (0)//条件为假
134 //{
135 printf("hello world!\n");//不加{} if只匹配离他最近的一句
136 printf("你好世界!\n");
137 //}
138 */
139
140 /*
141 int week = 5;
142 switch (week)
143 {
144 default: printf("错误\n"); break;
145 case 1: printf("周一\n"); break;
146 case 2: printf("周二\n"); break;
147 case 3: printf("周三\n"); break;
148 case 4: printf("周四\n");// break;
149 case 5: printf("周五\n"); //break;
150 case 6: printf("周六\n"); break;
151 case 7: printf("周末\n"); break;
152 }
153 */
154
155 /*
156 int x = 1, y = 2, z = 3;//找到最大值
157 int max;
158 if (x > y)
159 {
160 //x比y大
161 if (x > z)
162 {
163 max = x;//x最大
164 }
165 else
166 {
167 max = z;
168 }
169 }
170 else
171 {
172 if (y > z)
173 {
174 max = y;
175 }
176 else
177 {
178 max = z;
179 }
180 }
181 printf("%d\n",max);
182 */
183
184 /* 三目运算
185 max = x > y ?( x > z ? x : z) :( y > z ? y : z);
186 printf("%d\n", max);
187
188 */
189
190 getchar();//接收一个字符 防止闪屏
191 return 0; //函数结束
192 }
193
194
195
196
197 //预处理命令 可以当做注释用
198 #if 0 //#if 条件 如果调件满足 后面的这段程序会被编译
199
200 #elif 1 //else if条件2
201
202 #else // else
203
204 #endif // 作为结束的标记
2018-06-18 13:09:38