分支语句
- if语句的一般格式
if (表达式){ 语句; }
注意:非0为真,0为假
表达式为真,语句执行;反之相反
我们可以看看简单的案例:
//输入一个整数,判断是否为奇数(模2余1)
int a = 0;
scanf("%d", &a);
if (a % 2 ==0)//==是判断相等, 奇数,除2 余数1
printf("%d是奇数\n", a);
小技巧:为了避免表达式出错,可以选择值在前,变量在后
int a = 1;
if (a=5)//为了防止==和=出现,将常量放在前面
printf("hehe\n");
if(a==5)
printf("haha");
2 if else语句 if (表达式) { 语句1; } else { 语句2; }
表达式为真,语句1执行;反之,语句2执行
与if语句不同的是,if else语句多了一个选择
请看下面的代码
//判断奇数还是偶数
int a = 0;
scanf("%d", &a);
if (a % 2 == 1)
printf("%d是奇数\n", a);
else
printf("%d是偶数", a);
if语句和if else 语句 默认只能控制一条语句,如果要跟多条语句,加大括号。
int age = 0;
scanf("%d", &age);
if (age >= 18)
{//代码块
printf("成年\n");
printf("可以谈恋爱了\n");
}
else
{
printf("未成年\n");
printf("好好学习\n");
}
嵌套if 可以构成多重判断,在易于理解的基础上,if else if 语句经常出现
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
else if (age <= 44) //18-44
printf("青年\n");
else if (age <= 59) //45-59
printf("中老年\n");
else if (age <= 89) //60-89
printf("老年\n");
else //>=90
printf("老寿星\n");
悬空else问题:——如果有多个if else语句,else总是跟最接近的if匹配,往往会出现坑,需要注意
int a = 0, b = 2;//if a==1,才能进入if语句,也才轮的上if+else
if (a == 1)//if+else 合起来是一条语句
if (b == 2)//if+else嵌套在第一个if语句之中,
//如果第一个if语句不成立,嵌套的if和else就没机会执行
printf("hehe\n");
else//else与最近的if匹配
printf("haha\n");//运行结果执行
- switch语句
switch (整型常量表达式) { case 1(常量) : 语句1; break; case 2(常量) : 语句2; break; case 3(常量) : 语句3; break; break; default:语句; break; }
case和default没有顺序要求
default 最好在switch 的最后,放在其他位置,可能会对结果产生影响
如果某几个语句相同,可以化简操作,如下
int a = 0;
scanf("%d", &a);
switch (a)
{
case 2://简化
case 1://简化
case 5:
case 3:
case 4:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
default:
printf("输入错误");
break;
}
!!! 如果没有break,代码会一直进行,直到遇到break为止或代码运行到最后
int x = 3;
int y = 3;
switch (x % 2)
{
case 1:
switch (y)
{
case 0:
printf("first");
case 1:
printf("second");
break;
default: printf("hello");
}//注意:没有break,代码会一直进行
case 2:
printf("third");
}
循环语句
- while 语句
while(表达式){ 循环体;}
while由3部分组成:
循环变量初始化,判断和调整
先判断表达式,表达式为真,执行语句,再次判断,直至表达式为假,结束循环(不考虑循环体中有break和continue的情况)
int i = 1;//循环变量初始化
while (i <= 10)//判断
{
printf("%d", i);//循环的动作
i++;//调整
}
- do while 语句
do{循环体;}while(表达式);
do while与while 的不同之处:do while先进入循环体,执行语句,再判断,可见do while 至少执行一次(假设表达式为假,只执行一次)
请看下面的案例,理解do while 只执行一次的情况
int i = 11;
do
{
printf("%d ", i);
i++;
} while (i <= 10);//只执行一次
- for 语句
for(表达式1;表达式2;表达式3)【初始化;判断;调整 分号】{循环体;}
由于 while循环 的初始化,判断,调整 比较分散,因此引入了for循环(最常见的循环语句)
for 循环的执行流程:先初始化,再判断,表达式2为真,进入循环体,调整和判断,直到判断为假,结束循环(不考虑循环体中有break和continue的情况)
//使用for循环,在屏幕上打印1-10
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
注意!!!for 循环的初始化,判断,调整可以省略,判断部分省略,意味着恒成立
- break 和 continue
break用于永久的终止循环,跳出循环,执行后续的代码
continue跳过本次循环,本次循环下面的语句不再执行,直接进入判断部分(for循环中,跳过本次循环,来到调整部分)
以下为break和continue的简单案例理解
break
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;//永久终止循环,执行循环后面的代码
printf("%d ", i);
}//运行结果为:1 2 3 4
continue
- while 语句的continue
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i++;
}//1 2 3 4死循环,保持输出状态
2.for 语句的continue
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;//跳过本次循环,来到调整部分,再进入判断部分
printf("%d ", i);
}//运行结果为:1 2 3 4 6 7 8 9 10
杳杳碎碎念
以上是我学习C语言分支循环的简单总结,希望发现了它的小伙伴们,可以进行指正,很高兴可以和大家一起学习。