C语言----分支语句
目录
if
基本结构
分层结构
嵌套结构
注意:
switch_case
循环
for循环
基本结构
嵌套结构
基本结构变形
1. 变形一:
2. 变形二:
3. 变形三:
while循环
格式:
执行顺序:
do_while循环
格式:
循环控制语句
if
根据你符合我不同的条件,去执行了不同的语句
基本结构
if(表达式)
{
// 你符合这个条件的时候,就执行语句块1
语句块1;
}
else
{
// 你不符合这个条件的时候,就执行语句块2
语句块2;
}
执行顺序:首先判断表达式是否成立,如果成立就执行语句块1,否则执行语句块2
分层结构
if(表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
...
else
{
// 都不符合条件
语句块n;
}
嵌套结构
if(表达式1)
{
if(表达式2)
{
语句块2;
}
else
{
语句块3;
}
}
else
{
语句块;
}
注意:
1)if后面可以没有else,但是else前面必须有if
2)if和else后面的{}可以省略,但是只能匹配之后的一条语句
switch_case
switch(变量或表达式)
{
case 常量1: 语句块1; break;
case 常量2: 语句块2; break;
case 常量3: 语句块3; break;
...
case 常量n: 语句块n; break;
// 如果以上都没有匹配的话,就执行 default 后面的语句
default: 语句块n+1
}
执行顺序:
判断switch后面的表达式的结果,和case后的常量相匹配,如果匹配成功,就执行对应的语句块,如果没有匹配成功就执行default后面的语句块,遇到break结束
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a;
scanf("%d", &a);
switch (a)
{
case 1:
printf("%d\n", a); //删除break,语句重叠
break;
case 2:
printf("%d\n", a);
break;
case 3:
printf("%d\n", a);
break;
case 4:
printf("%d\n", a);
break;
default:
break;
}
return 0;
}
循环
for循环
基本结构
for(表达式1; 表达式2;表达式3)
{
语句块;
}
表达式1:赋初值
表达式2:循环的终止条件
表达式3:增值减值语句
执行顺序:
首先执行表达式1进行赋值,然后判断表达式2是否成立,如果成立就进入循环执行语句块,再执行表达式3进行增值或减值然后继续判断表达式2是否成立,直到表达式2不成立退出循环
嵌套结构
for(表达式1; 表达式2; 表达式3)
{
for(表达式4; 表达式5; 表达式6)
{
语句块;
}
}
// 执行顺序:
// 首先执行表达式一,要对外层循环的变量进行赋值,判断它符不符合表达式二的条件,符合进入到内部的循环,执行表达式四,判断符不符合表达式五,符合执行语句块,然后执行表达式6,然后判断表达式五是否成立,直到内部 for 循环,表达式六不符合表达式五的条件,后到外层的表达式三,内部执行一遍对于外层只执行了一次,如果表达式三符合表达式五,那么就还要在进入到 内部循环一遍,直到外层循环的表达式二不成立,那么整个循环结束
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i; // 循环变量
for (i = 1; i <= 10; i++)
{
printf("---------第%d次-------\n", i);
for (j = 1; j <= 10; j++)
{
printf("i:%d j:%d", i, j);
printf("\n");
}
}
return 0;
}
基本结构变形
1. 变形一:
int i = 0;
for(;表达式2; 表达式3)
{
语句块;
}
2. 变形二:
int i = 0;
for(;表达式2; )
{
语句块;
表达式3;
}
3. 变形三:
for(;;)// 死循环
{
if(表达式2)
{
语句块;
表达式3;
}
else
{
break;
}
}
练习.打印以下图案:
要求行数从终端输入。
输入:5
// 结果
*
**
***
****
*****
int x; = 行数
int y; = 每一行有多少个*
解题思路:
用for循环嵌套实现外层循环控制行数,内层循环控制每行个数。
while循环
格式:
定义循环变量并赋值;
while(判断条件) // 表达式
{
语句块;
// 循环完成之后需要改变定义变量的值
增值或减值语句;
}
执行顺序:
首先定义循环变量并赋值,然后判断是否符合条件,如果符合就进入循环执行语句块及增值减值语句,然后继续判断,直到判断条件不成立退出循环
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i = 1, num = 0;
while (i <= 100)
{
num += i;
i++;
}
printf("%d\n", num);
return 0;
}
找错
int main()
{
while(1>0); // 死循环
printf("hello");
return 0;
}
do_while循环
格式:
定义循环变量并赋值;
do
{
语句块;
增值减值语句;
} while(终止条件);
先执行后判断
死循环:
for(;;){};
while(1){};
// 让程序卡死在这等
while(1);
循环控制语句
break; continue;
break:直接结束循环
continue:结束本次循环,继续下一次循环
for (; i <= 10; i++)
{
if(i == 3)
{
break;
// continue;
}
printf("%d\n", i);
}
使用场景:
使用在循环语句中,结束循环
使用时需要判断条件
练习:从终端上输入一个字符并在终端上输出这个字符,当输入字符为‘q’时,程序结束。
练习:循环输入一个5位数,判断它是不是回文数。当输入0时循环结束。
即12321是回文数,个位与万位相同,十位与千位相同。