分支结构:
顺序结构:
按照顺序从上到下依次执行
选择结构:
主要分if语句和switch语句
if语句:
基础语法:
int age =10;
if(age>20&&age<30)
printf("弱冠");
printf("%d\n",age);
if(age<20&&age>35)
{
printf("%d\n",age);
printf("您的年龄不在青年范围内");
}
if语句如果没有花括号这会导致本不该被输出的语句被输出了
例如:
所以如果想要if控制多条语句必须带上大括号!!!!!
if else语句:
对于上述代码我们只需要判断是否为青年时我们可以使用if-else语句来优化一下
例如:
if(age>20&&age<35){
printf("弱冠");
printf("%d\n",age);
}else{
printf("%d\n",age);
printf("您的年龄不在青年范围内");
}
值得注意的是:
对于if-else的匹配上并非是对齐就是一对,而是else与离他最近的未匹配的if相匹配
if(age > 20 && age < 35)
printf("弱冠");
printf("%d\n",age);
if(age > 20 && age < 30)
printf("路还很长继续加油");
else
printf("6");
在这个代码中else与第一个if对齐,但实际与其匹配的if是第二个。
所以对于else而言其配对方法与英语的就近原则相类似
switch语句:
基础语法:
int a;
scanf("%d",&a);
switch(a)
{
case 1:
printf("a");
break;
case 2:
printf("a");
braek;
case 3:
printf("a");
break;
}
注意:在没有特殊的需求时必须提供break语句以防止case穿透;//braek语句后面会讲
通过代码我们可以发现在多分支结构对同一对象进行判断时使用switch语句相较于if语句更为简洁
合理使用case穿透有时也会有奇效
例如:
sum = 0;
switch(month) {
case 12:
sum = 30;
case 11:
sum += 31;
case 10:
sum += 30;
case 9:
sum += 31;
case 8:
sum += 31;
case 7:
sum += 30;
case 6:
sum += 31;
case 5:
sum += 30;
case 4:
sum += 31;
case 3:
sum += 28;
case 2:
sum += 31;
case 1:
sum += 0;
break;
此处利用case穿透完成每个月天数的累加。//至于为什么要倒过来嘛也许你可以自行尝试(因为代码是从上到下读取的特性所以如果正序放就导致输入12月时只有最后一行输出)
小总结:
if语句与switch语句都是分支语句在不同的场景使用,面对的需求是不同的,if语句结合后续的循环语句可以帮助筛选一些条件以完善代码
循环结构:
for循环:
基础语法:
int i , sum;
for(i = 0 ; i <= 9 ; i++)
{
sum += i;
}
上述代码是一个简单的for循环语句,表示是10以内的数之和。
通过此代码for的基础结构也很清晰
即
for(初始化;布尔表达式;更新表达式)
{
循环体;
}
所谓初始化即对循环控制的变量进行初始化赋值,该过程只执行一次,完成后在本次for循环中不会再重新定义。、
布尔表达式:
可以简单理解为循环次数,即在此处对刚刚初始化的对象进行限制,以保证循环我们想要的次数
更新表达式:
即对初始化对象更新,改变它的值使他靠近在布尔表达式中所限制的值。
循环体:
将我们想要多次执行的代码块放入其中以减少代码冗余。
while循环:
基础语法:
int a = 12;
while(a > 10)
{
printf("6");
}
对于while而言只要()内的判断为真就执行内部循环体,为假就不执行
但在这里有另一种循环:
就是我们的do - while循环
int a = 12;
do
{
a--;
}while(a > 0);
do - while循环嘛既然带个do了那必然不一样so介个循环会无条件先执行一次,就头铁先试一次再来判断;do - while循环的循环体不在while后而是在do后而且要注意条件不然就死循环了!!!!!
----------------------------------------------
控制语句:
终于到介里了还记得前面讲的break咩,它来喽。
break与continue:
break语句是用来终止程序。搭配分支循环语句使用用来终止程序。
由此可见break语句的不同位置会导致不同的结果,且break语句一旦执行该循环立刻结束不再执行。
continue语句
- 用来终止当前循环直接进行下一次循环(搭配if使用)在contiune后的代码全跳过
- 在continue语句后写代码编译器不会报错!!!但后面的代码永远不会执行!!!
由此验证了continue;语句的确直接跳过了此次循环不再执行后续语句。