目录
分支和循环
一、分支
- if语句
- swithc语句
1.代码结构
- 循环语句
- 选择语句
- 顺序语句
2.分支结构 - if语句
(1)if语句-单分支
说明:要么执行,要么不执行,当表达式成立的之后,则执行语句;如果表达式不成立,则直接跳过整个if语句继续执行后面的代码
语法结构:
if(表达式)
执行语句;
练习:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
return 0;
}
注:表达式必须为真才执行语句
(2)if语句-双分支
说明:如果表达式成立,则执行语句1;如果不成立,则执行语句2
语法结构:
if(表达式1)
执行语句1;
else
执行语句2;
练习:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
return 0;
}
(3)if语句-多分支
说明:实现了多选一的操作,会根据不同的条件从上往下来进行匹配,如果匹配上了,则执行对应的语句,然后直接结束整个if-elif语句,但是,如果所有的条件都不成立的话,则执行else后面的语句
语法结构:
if(表达式1)
执行语句1;
else if(表达式2)
执行语句2;
else
执行语句3;
练习:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else if(age >= 18 && age < 30)
{
printf("青年\n");
}
else if(age >= 30 && age < 50)
{
printf("中年\n");
}
else if(age >= 50 && age < 80)
{
printf("老年\n");
}
else
{
printf("老不死\n");
}
return 0;
}
注:不管if-elif-else有多少个分支,都只会执行其中的一个分支
(4)嵌套if语句
说明:说明:if语句的嵌套,可以在单分支,双分支,多分支之间进行任意组合
语法结构:
if(表达式1)
执行语句1;
if(表达式2)
执行语句2;
注:从语法角度来说,嵌套的层数没有任何的限制,但是,为了代码的可读性和可维护性,嵌套层数不要超过3层
3.分支结构 - Switch语句
语法结构:
swtich(整型表达式)
{
语句项;
}
语句项:case 语句
case 整型常量表达式;
执行语句;
练习:
#include <stdio.h>
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
编程好习惯
在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break 。
例题:
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
二、循环
- while循环
- for循环
- do while循环
1.while循环
while语法结构:
while (条件表达式)
循环语句;
练习:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d\n", i);
i = i + 1;
}
return 0;
}
while语句中的break和continue
break:
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if(i == 5)
break;
printf("%d\n", i);
i = i + 1;
}
return 0;
}
总结: break 在 while 循环中的作用:
其实在循环中只要遇到 break,就停止后期的所有循环,直接中止循环。所以:while 中的 break 是用于永久终止循环的
continue:
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
i = i + 1;
if(i == 5)
continue;
printf("%d ", i);
}
return 0;
}
总结: continue 在 while 循环中的作用就是:
continue 是用于终止本次循环的,也就是本次循环中 continue 后边的代码不会再执行,而是直接 跳转到 while 语句的判断部分。进行下一次循环的入口判断。
2.for循环
for语法结构:
for(表达式1;表达式2;表达式3)
循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断 循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
练习:
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1 - 初始化; i<=10 - 判断部分;i++ - 调整部分)
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
for语句中的break和continue
break:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 10; i++)
{
if(i == 5)
break;
printf("%d",i);
}
getchar();
return 0;
}
continue:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
getchar();
return 0;
}
for语句的循环控制变量
1. 不可在 for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议 for 语句的循环控制变量的取值采用“前闭后开区间”写法。
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}
3.do...while()循环
do语句的语法结构:
do
循环语句;
while(表达式);
练习:
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}
while (i < 10);
return 0;
}
do while循环中的break和continue
break:
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == 1)
break;
printf("%d ",i);
}while(i<10);
getchar();
return 0;
}
continue:
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == 1)
continue;
printf("%d\n",i);
}while(i<10);
getchar();
return 0;
}
特点:循环至少执行一次,使用的场景有限,所以不是经常使用。