二路分支
- 逻辑:程序中某段代码需要在满足某个条件时才能运行
- 形式:
- if 语句:表达一种 如果-则 的条件执行关系(可以没有else)
- if-else 语句:表达一种 如果-否则 的互斥分支关系
//if-else 语句
if(a%2 == 0) // if(表达式) 如果表达式为真,则执行输出语句“a是偶数”
{
printf("a是偶数\n");
}
else // 否则执行输出语句“a是奇数”
{
printf("a是奇数\n");
}
多路分支
- 辑:根据不同的条件执行不同的代码片段
- switch(n) 语句中的 n 必须是一个整型表达式,即 switch 判断的数据必须是整型
- case 语句只能带整型常量,包括普通整型或字符,不包括 const 型数据。
- break 语句的作用是跳出整个 swtich 结构,没有 break 程序会略过case往下执行
- default 语句不是必须的,一般放在最后面(因此不需要 break)
switch(n) // switch(表达式) 该表达式只能为整形、、、可查看数据类文章
{
case 1:
printf("one\n");
break;
case 2:
printf("two\n");
break;
case 3:
printf("three\n");
break;
default:
printf("其他数字\n");
}
const
- 逻辑:使一个变量不可修改
- 作用:
- 修饰普通变量,使之不可修改
- 修饰指针变量,使之不可修改或者使其指向的目标不可修改,点击查看详情
int const a = 100; // 定义了一个不可修改的变量a
const int b = 200; // 定义了一个不可修改的变量b
a = 101; // 错误
b = 202; // 错误
while与 do…while循环
- 逻辑:使得程序中每一段代码可以重复循环地运行
- 形式:
- while 循环:先判断,再循环
- do-while 循环:先循环,再判断
while循环
- 语法点:
- while 循环先进行判断,条件为真后才执行循环体,因此循环体可能一遍也不执行。
- do-while 循环先执行循环体,再进行判断,因此循环体至少会执行一遍。
- do-while 循环中的 while 语句后面有分号;
// 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
while(a <= 100)
{
printf("%d\n", a);
a++;
}
do-while 循环
- 语法点:
- while 循环先进行判断,条件为真后才执行循环体,因此循环体可能一遍也不执行。
- do-while 循环先执行循环体,再进行判断,因此循环体至少会执行一遍。
- do-while 循环中的 while 语句后面有分号;
// 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
do
{
printf("%d\n", a);
a++;
}while(a <= 100);
for循环
- 逻辑:与 while 循环类似,但更加紧凑,for 循环将控制循环的变量集中在一行
- 语法点:
- 循环头的标准语法是: for(表达式1 ; 表达式2 ; 表达式3)
- 表达式1一般用来初始化循环控制变量
- 表达式2一般用来作为循环判定条件,为真则进入循环,为假则跳出循环
- 表达式3一般用来更新循环控制变量
- 三个表达式均可以省略,但分号不能省略
// 循环输出一系列整数,直到100为止
int a;
for(a=30; a<=100; a++)
{
printf("%d\n", a);
}
break与continue
- 逻辑:
- break:① 跳出 switch 语句; ② 跳出当层循环体
- continue:结束当次循环,进入下次循环
switch(n)
{
case 1:
printf("one\n");
break; // 跳出 switch 语句
case 2:
printf("two\n");
break;
}
while(1)
{
int n = scanf("%d", &a);
if(n == 0)
break; // 跳出当层 while 循环体
}
for(int i=1; i<=100; i++)
{
if(i%7 == 0)
continue; // 跳过所有能被7整除的数
printf("%d\n", i);
}
goto语句
- 逻辑:无条件跳转
-
语法:
- goto语句直接跳转到本代码块中的标签处
- 标签指的是以冒号结尾的标识符
-
作用:
- goto语句的无条件跳转不利于程序的可读性,一般不建议使用
- goto语句常被用在程序的错误处理中
int main()
{
printf("%d\n", __LINE__); // 打印第3行
// 无条件跳转到label处
goto label;
printf("%d\n", __LINE__); // 打印第7行,此处被略过
label:
printf("%d\n", __LINE__); // 打印第9行
}