第四天学习笔记
来源:互联网 发布:天刀女性明星捏脸数据 编辑:程序博客网 时间:2024/04/30 20:31
选择结构-Switch基本概念
计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表 达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
格式
switch(表达式)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2; …
break;
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
Switch注意点
1.case的穿透问题
switch里面的case只要匹配一次其它的都失效,包括default. 正是因为switch的这个特性, 所以可能导致程序出现逻辑错误
为了避免上述情况,C语言还提供了一种break语句,专用于跳出switch语句,break 语句只 有关键字break,没有参数。
在每一case语句之后增加 break 语句, 使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果
有时候也可用巧妙的利用case的穿透问题来简化代码
2.switch条件类型
表达式的类型(case语句后的值)必须是整型或可以转变为整型的值 (short、char和int类型)。
switch (10.10){ // 报错 case 1: printf("12345\n"); break; default: printf("error\n"); break; }
3.case值的规定
case的值必须是是整型或可以转变为整型的值
switch (10){ case 1: printf("12345\n"); break; case 'a': // 字符可以转换为整型 printf("12345\n"); break; case 10.8: // 报错 printf("12345\n"); break; default: printf("error\n"); break; }
case的值1、值2…值n只能为常数或常量,不能为变量。
int num = 5; switch (10){ case num: // 变量报错 printf("12345\n"); break; default: printf("error\n"); break; }
如果在case后面定义的变量必须加上大括号
switch (10){ case num:{ int num = 5; printf("num = %d", num); break; } default: printf("error\n"); break; }
switch中case后面的表达式的值不能相同
switch (10){ case 1: printf("12345\n"); break; case 1: // 和上面相同报错 printf("12345\n"); break; default: printf("error\n"); break; }
case语句可以有任意多句,可以不用加括号“{}”
switch (10){ case 1: printf("123\n"); printf("123\n"); break; default: printf("error\n"); break; }
4.default的位置问题
default可以省略
switch (10){ case 1: printf("123\n"); break; }
default语句可以写在switch语句中的任意位置
switch (10){ default: printf("error\n"); break; case 1: printf("123\n"); break; }
执行流程:在执行的过程中,如果遇到break语句,则跳出switch语句。如果没有遇到break 语句,则一直执行到switch语句的结束。
if语句和switch语句选择
分支比较多且无法穷尽或进行大量列举 时最好用if, Switch对遇见判断非常不利
如果数据量不是很大, 并且数据是固定的可以用Switch
理论上Switch的效率比if高
循环结构概述
循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段, 直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。
循环结构简单来说就是:循环是一次又一次的执行相同的代码块
C语言提供了多种循环语句,可以组成各种不同形式的循环结构:
goto语句和if语句构成循环;
while语句;
do-while语句;
for语句;
构成循环结构的几个条件
一般来说一个循环需要以下几部分构成:
循环控制条件:循环退出的主要依据,来控制循环到底什么时候退出
循环体:循环的过程中重复执行的代码段
能够让循环结束的语句(递增、递减、真、假等):能够让循环条件为假的依据,否则退出循环
1.while循环语法格式
while ( 条件 ) { 语句1; 语句2; .... }
2.while循环执行流程
如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内 容)。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
while循环特点:
如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行
while循环注意点
while循环的陷阱
任何数值都有真假性
while (1) {//死循环 printf("123\n"); } printf("123\n"); // 永远执行不到
当一个变量与一个常量进行== 或 != 的时候,通常把常量写在前面
int num = 3; while (3 == num) { printf("num = %d\n",num); num++; }
while 后如果只有一条语句它可以省略大括号
空语句它也是一条语句
while小阔号后面不可以直接写分号
// while省略大阔号的时候条件满足就会执行while后面的第一条语句 while (0) printf("123\n"); printf("456\n");
- 作用域问题
while (1) { int a = 10; } printf("a = %d\n", a); // 访问不到 while (0) int a = 10; // 作用域混乱 printf("a = %d\n", a);
- 分号问题
while (1);//空语句 { printf("123\n"); }
- 最简单的死循环
while (1);
注意点
1.while循环的陷阱
任何数值都有真假性
while (1) {//死循环 printf("123\n"); } printf("123\n"); // 永远执行不到
当一个变量与一个常量进行== 或 != 的时候,通常把常量写在前面
int num = 3; while (3 == num) { printf("num = %d\n",num); num++; }
while 后如果只有一条语句它可以省略大括号
空语句它也是一条语句
while小阔号后面不可以直接写分号
// while省略大阔号的时候条件满足就会执行while后面的第一条语句 while (0) printf("123\n"); printf("456\n");
作用域问题
while (1) { int a = 10; } printf("a = %d\n", a); // 访问不到 while (0) int a = 10; // 作用域混乱 printf("a = %d\n", a);
分号问题
while (1);//空语句 { printf("123\n"); }
最简单的死循环
while (1);
1.do-while循环语法格式
do { 语句1; 语句2; .... } while ( 条件 );
2.do-while循环执行流程
do-while语句语义:
当执行到do-while循环时,首先会执行一遍循环体中的语句(“循环体”就是do后面大括号{}中的内容)。接着判断while中的条件,如果条件成立,就执行循环体中的语句。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
while循环特点:
do-while循环的特点:不管while中的条件是否成立,循环体中的语句至少会被执行一遍
使用场景
+ 口令校验
1.for循环语法格式
C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循 环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。
for(初始化表达式;循环条件表达式;循环后的操作表达式){ 执行语句;}
2.for循环执行流程
for循环开始时,会先执行初始化表达式,而且在整个循环过程中只执行一次初始化表达式
接着判断循环条件表达式,如果条件成立,就会执行循环体中的语句(“循环体”就是for后面大括号{}中的内容)
循环体执行完毕后,接下来会执行循环后的操作表达式,然后再次判断条件,重复上述过程,直到条件不成立就结束for循环
for循环的其他形式
表达式省略(三个表达式都可以省略)
如:for(; ;) 语句相当于while(1) 语句,即不设初值,不判断条件(认为表达式2为真值),循环 变量不增值。无终止地执行循环体。
循环控制无关的任意表达式
表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达 式,中间用逗号间隔。
什么情况下用for
当变量只是用来控制循环的次数的时候用for更节约内存
int i = 0; while (i < 3) { printf("i = %d\n", i); i++; } printf("循环结束后 i = %d\n", i);
什么情况下用while
当变量在循环结束后还需要使用,就用while
for (int j = 0; j < 3; j++) { printf("j = %d\n", j); } printf("循环结束后 j = %d\n", j);// 不能访问j
一般情况下while和for可以互换, 但是如果循环执行完毕之后就不需要使用用于控制循环的增量, 那么用for更好
for循环的嵌套
循环语句的循环体中存在其他的循环语句就是循环嵌套,称之为循环嵌套
注意: 一般循环嵌套不超过三层
外循环执行的次数 * 内循环执行的次数就是总共执行的次数
- 格式:
while(条件表达式) { while((条件表达式) { 语句; ... } }
for (;;) { for (;;) { for (;;) { for (;;) { } } } }
for (;;) { while((条件表达式) { 语句; ... } }
while((条件表达式) { for (;;) { 语句; ... } }
0 0
- 第四天学习笔记
- 第四天学习笔记
- 学习笔记第四天
- Android学习笔记: 第四天
- java学习笔记--第四天
- JSP学习笔记(第四天)
- processing 第四天学习笔记
- JAVA学习第四天笔记
- JAVASE学习笔记第四天
- 第四十二天学习笔记
- 第四天java学习笔记
- C程序设计 第四版(谭浩强)-学习笔记-第四天
- C# 学习笔记 -- 第四天 处理字符串
- 集合 java基础学习笔记 第四天
- Java学习第四天笔记-第一部分
- Java学习第四天笔记-第二部分
- Java学习第四天笔记-第三部分
- JSP学习笔记(第四天续)
- 1089-1096
- UEditor扩展上传
- OC可变数组的创建与简单应用
- Android ORMLite 框架的入门用法
- 一个简单地Shell-like 的实现
- 第四天学习笔记
- OC中可变字典和不可变字典
- Dynamics CRM2015 The plug-in type does not exist in the specified assembly问题的解决方法
- 机房收费之查看数据库代码
- 开源 java CMS - FreeCMS2.3会员我的留言
- this call() apply()理解
- Android 常用设计模式(一)
- iOS找色块游戏
- 集合、可变集合