1.if语句
1.1 if
if (表达式)
语句
表达式为真(非0),则语句执行;表达式为假(0),则语句不执行。
1.2 else
if(表达式1)
语句1
else
语句2
当if的表达式为假,不执行语句1时,则执行else后的语句2·
1.3 多条语句
在 if 和 else 语句中默认都只控制⼀条语句。如果想要if语句控制多条语句,要用{}将代码括起来,else同理。
1.4 多分支
在if else语句中,else可以与另⼀个 if 语句连用,构成多分支的场景。
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
else
语句4;
1.5 悬空else问题
当有多个else和if时,else总与前面最近的、还没有匹配的if匹配。
#include<stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
以上代码中else与第二个if匹配。
2. switch语句
2.1 switch语句的格式
switch 语句是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。
switch (表达式)
{
case value1: 语句1
case value2: 语句2
...
default: statement
}
上面代码中,根据switch后边的 表达式产生的不同的值,执行相应的 case 分支,如果找不到对应的值,就执行default分支。
注意:
1.switch后的表达式必须是整型表达式。
2.case后的值必须是整型常量表达式。
2.2 switch语句中的break
switch语句中只有使用break才能跳出switch语句,如果某一个case语句后没有break语句,代码就会继续往下执行,则有可能执行其他case语句中的代码,直到遇到break语或者switch语句结束。
例如:
#include<stdio.h>
int main()
{
switch(0)
{
case 0:
printf("hello\n");
case 1:
printf("world\n");
break;
case 2:
printf("haha\n");
}
return 0;
}
输出:
hello
world
代码在执行完case 0后的语句后没有遇见break语句,所以继续往下执行了case 1语句,直到遇见break语句后才结束了switch语句。
2.3 switch语句中的default
在使用switch语句的时候,我们常会遇见switch后的表达式中的值无法匹配代码中的case语句的时候。这是就要在switch语句中加入default。当switch后的常数不等于所有case后的常数时,就会执行default后的语句。
3. while循环
3.1 while循环的格式
while(表达式)
{
语句;
}
3.2 while循环的执行流程
当while后的表达式为真时,执行while后的语句,当表达式恒为真时,那么while语句则会一直循环执行while后的语句。
例如:
#include<stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
printf("%d ", i);
i = i + 1;
}
return 0;
}
输出:1 2 3 4 5 6 7 8 9 10.
当i大于10时,不满足while后的表达式,则表达式为假,结束了循环。
4 for循环
4.1 for循环的格式
for(表达式1;表达式2;表达式3)
{
语句;
}
表达式1用于循环变量的初始化
表达式2用于循环结束条件的判断
表达式3用于循环变量的调整
4.2 for循环的执行流程
首先执行表达式1初始化循环变量,接下来执行表达式2的判断部分,为真则执行循环语句,循环语句执行完后再执行表达式3,调整循环变量,然后再去表达式2的地方执行判断,为真则继续执行,为假则结束循环。
整个循环过程中,表达式1初始化部分只被执行1次。
例如:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1;i<=10;i++)
{
printf("%d ", i);
}
return 0;
}
输出:1 2 3 4 5 6 7 8 9 10
4.3 for循环的特殊写法
1.for循环中的三个表达式可以选择性省略,判断部分被省略,意味着判断部分恒成立,可能会造成死循环。
2.多个变量控制for循环
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
for(a = 0,b = 10;a < b;a++,b--)
{
printf("a = %d, b = %d", a, b);
}
return 0;
}
5 do-while循环
5.1 do-while的格式
do
{
语句;
}while(表达式);
5.2 do-while的执行流程
do-while循环先执行大括号中的语句,执行完语句后,再去执行while后面的表达式,若表达式为真,则继续循环,为假则结束循环。
所以do-while循环至少会执行一次循环体。
6 break和continue语句
break的作用是永久终止循环,只要break被执行,就会直接跳出循环,往后执行。
continue的作用是跳过本次循环中continue后面的代码。
6.1 while循环中的break和continue
break举例
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if(i == 5)
break;//当i等于5后,就执⾏break,循环就终⽌了
printf("%d ", i);
i = i + 1;
}
return 0;
}
输出:1 2 3 4
打印了1 2 3 4后,当i=5是,循环在break处终止,不再打印,不再循环。
所以 break 的作用就是永久的终止循环,只要 break 被执行, break 外的第⼀层循环就终止了。
那以后我们在循环中,想在某种条件下终止循环,则可以使用 break 来完成我们想要的效果。
continue举例
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if(i == 5)
continue;/*当i等于5后,就执⾏continue,直接跳过continue后的代码,去循环的判断的地⽅
因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环*/
printf("%d ", i);
i = i + 1;
}
return 0;
}
到这里我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进行下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。
6.2 for循环中的break和continue
break举例
#include <stdio.h>
int main()
{
int i = 1;
for(i = 1; i <= 10; i++)
{
if(i == 5)
break;
printf("%d ", i);
}
return 0;
}
输出:1 2 3 4
continue举例
#include <stdio.h>
int main()
{
int i = 1;
for(i = 1; i <= 10; i++)
{
if(i == 5)
continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
printf("%d ", i);
}
return 0;
}
输出:1 2 3 4 6 7 8 9 10
所以在 for 循环中 continue 的作用是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环无需再执行后续某些操作的时候,就可以使用
continue 来实现。
6.3 do-while中的break和continue
do.while 语句中的 break 和 continue 的作用和 while 循环中几乎⼀模⼀样,在这里不过多赘述。
7 循环的嵌套
举例:找到100~200间的素数
#include <stdio.h>
int main()
{
int i = 0;
//循环产⽣100~200的数字
for(i = 100; i <= 200; i++)
{
//判断i是否为素数
//循环产⽣2~i-1之间的数字
int j = 0;
int flag = 1;//假设i是素数
for(j = 2; j < i; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
printf("%d ", i);
}
return 0;
}
8 goto语句
goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。
例如:
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next;
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}
在多层循环的代码中,可以用goto快速跳出循环。
总结
以上就是我在学习c语言中对分支和循环语句的知识总结,希望对大家有所帮助。


被折叠的 条评论
为什么被折叠?



