1、二路分支 if- eles
- 逻辑:程序中某段代码需要在满足某个条件时才能运行
- 形式:
-
- if 语句:表达一种 如果-则 的条件执行关系
- if-else 语句:表达一种 如果-否则 的互斥分支关系
- 举例:
// if 语句
if(a%2 == 0)
{
printf("a是偶数\n");
}
//if-else 语句
if(a%2 == 0)
{
printf("a是偶数\n");
}
else
{
printf("a是奇数\n");
}
- 注意:
1.if 语句可以单独使用,else 语句不可以,else 语句必须跟if语句配套使用
2.不管是 if 语句还是 else 语句,代码块都必须使用大括号{}括起来,否则只有首个逻辑语句有效
if (a < 200)
printf("a小于200 ...\n");
else
printf("a 大于或等于200 ..\n");
2、多路分支 switch - case
- 逻辑:根据不同的条件执行不同的代码片段
- 语法:
switch ( 需要判断的语句【整形表达式】 )
{
case 某个值1 :
/*
当整形表达式的值为 某个值1 的时候需要执行的代码块
*/
break ; // 跳出SwitchCase 语句
case 某个值2 :
/*
当整形表达式的值为 某个值2 的时候需要执行的代码块
*/
break ; // 跳出SwitchCase 语句
case 某个值N :
/*
当整形表达式的值为 某个值N 的时候需要执行的代码块
*/
break ; // 跳出SwitchCase 语句
default: // 如果以上的值都不满足...
/*
当以上的值都不匹配则执行....
*/
break ;
}
switch(n)
{
case 'a':
printf("one\n");
break;
case 2:
printf("two\n");
break;
case 3:
printf("three\n");
break;
default:
printf("其他数字\n");
}
- 要点解析:
- switch(n) 语句中的 n 必须是一个整型表达式,即 switch 判断的数据必须是整型(char short int long ..)
- case 语句只能带整型常量(1 , 2 , 3, 'a' ,'K' ....),包括普通整型或字符,不包括 const 型数据。
- break 语句的作用是跳出整个 swtich 结构,没有 break 程序会略过case的判断往下执行,直到遇到下一个break 或整个SwitchCase语句结束。
- default 语句不是必须的,一般放在最后面(因此不需要 break)
3、const
- 逻辑:使一个变量不可修改(让一个变量变成"常量")
- 作用:
- 修饰普通变量,使之不可修改
- 修饰指针变量,使之不可修改或者使其指向的目标不可修改
- 示例:
int const a = 100; // 定义了一个不可修改的变量a
const int b = 200; // 定义了一个不可修改的变量b
int const k ; // "正确的" 但是由于初始化时没有赋值因此k的值从此以后就无法再次进行复制
a = 101; // 错误
b = 202; // 错误
4、while 与 do…while 循环
- 逻辑:使得程序中某一段代码可以重复循环地运行
- 形式:
- while 循环:先判断,再循环
- do-while 循环:先循环,再判断
while循环
while循环:入口判断
// 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
while(a <= 100)
{
printf("%d\n", a);
a++;
}
while( getchar () != '\n') ;
do-while 循环
do-while循环:出口判断
// 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
do
{
printf("%d\n", a);
a++;
}while(a <= 100);
- 语法点:
- while 循环先进行判断,条件为真后才执行循环体,因此循环体可能一遍也不执行。
- do-while 循环先执行循环体,再进行判断,因此循环体至少会执行一遍。
- do-while 循环中的 while 语句后面有分号;
5、for 循环
- 逻辑:与 while 循环类似,但更加紧凑,for 循环将控制循环的变量以及判断语句以及初始化语句集中在一行
- 语法:
for( 初始化语句 ; 条件判断语句 ; 循环变量控制语句 )
{
// 条件满足时执行的代码块
}
初始化语句: 只会在第一次进入循环体时被执行。
条件判断语句 : 每一次进入循环之前都会被执行,用于决定是否执行代码块。
循环变量控制语句 : 每一次执行完代码块后执行。
- 示例:
// 循环输出一系列整数,直到100为止
int a;
for(a=30; a<=100; a++)
{
printf("%d\n", a);
}
- 语法点:
- 循环头的标准语法是: for(表达式1 ; 表达式2 ; 表达式3)
- 表达式1一般用来初始化循环控制变量
- 表达式2一般用来作为循环判定条件,为真则进入循环,为假则跳出循环
- 表达式3一般用来更新循环控制变量
- 三个表达式均可以省略,但分号不能省略 for( ; ; ){ } --> 死循环
6、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);
}
7 、goto语句
- 逻辑:无条件跳转
语法:
goto 标签;
标签:
int main()
{
printf("%d\n", __LINE__); // 打印第3行
// 无条件跳转到label处
goto label;
printf("%d\n", __LINE__); // 打印第7行,此处被略过
label:
printf("%d\n", __LINE__); // 打印第9行
}
语法:
1、goto语句直接跳转到本代码块中的标签处
2、标签指的是以冒号结尾的标识符
- 作用:
- goto语句的无条件跳转不利于程序的可读性,一般不建议使用,容易破坏应用层的内存
- goto语句常被用在程序的错误处理中
未完待续 ......
有疑问的小伙伴可以留言一起交流讨论!!!