C语言-分支语句和循环语句
目录
一,分支语句和循环语句的分类:
二,分支语句
1,if
2,switch
三,循环语句
1,while循环
2,for循环
3.do……while循环
4,goto语句
四,练习实例
1,n的阶乘
2,计算1!+2!+……+n!
3,在一个有序数组内查找具体的某个数字n(二分查找)
4,演示多个字符从两端移动,向中间汇聚
5,演示用户登录场景
6,猜数字游戏
一,分支语句和循环语句的分类:
C语言的分支语句包含if,switch。循环语句包含while,for,do while,goto语句。
二,分支语句
1,if
分支语句if有三种形式:
1,if(表达式)+语句;
2,if(表达式)+语句1 + else-语句2;
3.if(表达式)+语句1 + else if(表达式)+语句2 + else-语句3
//3,满足第一个if则执行语句1,不满足第一个满足第二个则执行语句2,都不满足执行语句3
2,switch
练习举例:
三,循环语句
1,while循环
2,for循环
表达式1:初始化部分,用于初始化循环变量
表达式2:条件判断部分,用于判断循环时候终止
表达式3:调整部分,用于循环条件的调整
例子:
输出结果为1,2,3,4,6,7,8,9,10
对比while
//当i==5时,中断导致i不能增加,一直为5;陷入死循环
输出结果为:1 2 3 4 死循环
建议:1,不可在for循环体内修改循环变量防止for循环失去控制
2,表达式2不建议用“<=",”>="的写法,尽量用“<"或">"。
for循环的四个变种:
1,
输出结果为:hehe 死循环
//分析:for循环的判断部分(表达式2)省略意味着for恒成立
2,
结果:9个hehe
3,
打印结果:三个hehe
结果分析:i,j 都没有赋值,导致导致第一次第二层的for循环执行3次后j==3 不小于3第二次的三次for循环无法执行
4.
结果:2个hehe
3.do……while循环
特点:do……while循环至少会执行一次,故不常用
例子:
结果:2~11没有5
4,goto语句
goto语句并不常用,最常用的用法是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环
含义:goto语句可以实现跳转
例子:
执行到goto可以直接跳出三层循环到error
四,练习实例
1,n的阶乘
2,计算1!+2!+……+n!
3,在一个有序数组内查找具体的某个数字n(二分查找)
4,演示多个字符从两端移动,向中间汇聚
5,演示用户登录场景
6,猜数字游戏
7,最大公约数
1,暴力枚举法求解
2,辗转相除法求解
8,将三个整数按从大到小输出
9,1到 100 的所有整数中出现多少个数字9
10,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
11,求10 个整数中最大值
12,九九乘法表
13,变种水仙花数
妙用:sum +=(i/j) * (i%j);
通过for循环,让j每次变成原来的十倍,再在每次循环中对五位数每次取整和取余
五,补充
1,else语句总是和它的对齐的if语句匹配(x)
解析:若连续写两个if——else 语句第一个if 不会和已经对齐第二个if——else中的else进行匹配。
else只会和最近的if进行匹配。(就近原则)
2,while循环中条件表达式的执行次数总是比循环体的执行次数多一次
因为当条件不满足时条件表达式执行了一次,但是由于不进入循环内部,故不执行循环体。
3,BUG
屏幕报错:stack around the variable '数组名' was corrupted.(变量"数组名“周围的栈已损坏 )
错误原因:数组越界访问,写入数据超出数组分配的内存空间。
例:arr[1] = {0};
此时又利用scanf向arr中输入了个数超过1的各种数,就会出现上述报错。
