C语言分支和循环

可以根据目录观看需要了解的部分

1.分支语句

1.1 if语句

    if(表达式)
        语句1
else
        语句2
若表达式为turn(0),则执行语句,若为flast(非0)则不执行语句
== : 判断是否相等,相等则输出,不相等则不输出
if语句后不用带 ; 不然就会和后面语句分隔开
c语言为顺序结构,先输入再选择
 默认情况 下 if   else 的后面只能跟一条语句
如果要跟多条语句,则可使用{}  如下

1.2 分支包含多条语句的方法

1.3 嵌套if语句

在if else语句中,else可以和另一个if语句连用,构成多重判断
例如:要求输入一个整数,判断输入的整数是0,还是正数或负数

1.4 例题

输入一个人的年龄
如果年龄 < 18岁,打印"少年"
如果年龄在18岁至44岁打印"青年"
如果年龄在45岁至59岁打印"中老年"
如果年龄在60岁至89岁打印"老年"
如果90岁及以上打印"老寿星"

简化版

1.5 悬空else

上图中,因为if条件不成立,所以不会执行if语句,所以不输出
if语句中的else只会和 距离最近 的if匹配
同时,if  else 语句中,只会同时执行一条语句,执行if时不执行else,执行else时,if则不成立。

2.关系操作符

>  大与运算符
< 小于运算符
>= 大于等于运算符
<= 小于等于运算符
== 相等运算符
!= 不相等运算符
在选择语句中,容易将 =(赋值)】与 [ == (判断相等) 弄混淆,所以在选择语句中习惯将  if(5==a),将值写在相等运算符的左边,如果==写错也能立即发现错误
多个关系运算符不宜连用,例如  if(a>b>c)
if语句中的(a<b<c)会逐步比较,先进行a与b的比较结果为1,然后1再和c比较
正常的表达方式应为: if(a<b && b<c)
&&---并且

3.条件操作符

3.1三目操作符  :

        exp1(语句1) ? exp2 : exp3
意思就是:先执行语句1,如果语句1为真,则执行语句2。如果语句1为假,则执行语句3。其用法与 if 语句类似
   

3.2例题:

实现找出两个数中的最大值

3.3 逻辑操作符

|| :或
&& : 与
! :非
注 : c语言中,非0表示真,0表示假
!
 ! a : 当a = 0 时,则 a 为假,! a 则为真
&&(双目操作符)  (参考 2.关系操作符)
a && b   (可以理解为并且)
 都为真,则为真,却一方不可
例: 张三 && 李四,抬桌子却 谁都不
||    (a或者b  有一个满足就可以)(张三或者李四帮忙抬桌子)

3.4 例题:

(闰年判断)
方法一:
方法二:
方法三:

4 短路(逻辑运算符中才存在)

在逻辑操作符( ||  &&  !)的运算中,代码是从左往右运算的,如果运算符左边的表达式满足逻辑运算符的条件,则不再对右侧表达式求值,  这种情况成为“短路”。   如方法一
在c语言中 0 为假,非 0 为真

5.switch语句

(switch语句是一种特殊的if....else结构,用于判断条件有多个结果的情况,把多个的 else if 改成更易用,可读性更好的形式)
switch语句
switch(表达式)
    {
        case 结果1:
             break; (打断程序运行)
        case 结果2:
            break;
        case 结果3:
            break;
        default:
    }

5.1 例题:

if语句
switch语句
  case语句决定从哪个入口进
break决定从哪跳出
switch语句后的表达式【  switch(表达式)】  必须是整型
case后的值,必须是整型常量表达式

其中,字符也为整型,可以使用switch语句    因为字符的本质是 ASCII码 值

  default可有可无,可加可不加
要表示一周
要表示周一~~周五为工作日,周天为休息日
default
如上述程序,如果输入的值不在1~7之间,则default可以使用

6.循环语句

while语句
  while(表达式)
        语句;
while语句后默认跟一条语句,如果跟多条,则需要使用 {}
在屏幕上打印1--10
例题:输出正的整数,逆序打印每一位
如:输入1234,输出4321
        输入521,输出125

1.for 循环(三种循环中使用最多)

语句形式
for(表达式1 表达式2 表达式3)  (for循环中的三个表达式,任意一个都可以省略)
        语句;// 如果使用多条语句则使用  { }
表达式1 :初始化表达式
表达式2 :判断表达式
表达式3 :调整
    

1.1 例题

2. do--while 循环(使用最少)

语法
do
    语句;
while(表达式);
 do执行语句  while判断真假,为真则再次执行语句

2.1 例题

3. break 和 continue 语句

break 的作用是永久的终止循环,即跳出循环

continue 的作用是跳过本次循环中,continue 后面的代码

3.1 while循环中的 break 和 continue

3.1.1  break
当 a == 5;的时候执行 break 语句,就会跳出 while 循环,此时输出结果为 1234
3.1.2 continue
continue 的本质是:跳过 continue 后面的代码
所以当 a == 5;时,执行 continue 语句,跳过了 printf()和a++语句,开始执行 while循环,此时a=5,所以陷入了死循环,代表 a 的值永远为 5 
如果想实现打印 1 2 3 4 6 7 8 9 10,缺少五,则只需修改
 

3.2 for 循环中的 break 和 continue

3.2.1 break
3.2.2 continue
3.2.3 break 与 continue 的使用场景
如果想要实现输入密码,如果密码输入正确,则可用 break 跳出循环  ,如果密码输入错误,则可用 continue 跳过后面的代码,重新输入密码。

4 循环的嵌套

 while,do while,for 循环可以嵌套在一起使用,效率更高

4.1 例题

解释:
1.进入第一层 for 循环 a = 100;a <= 200;
2.进入第二层 for 循环,b = 2;b <= 99;
3.if 判定--100 % 2 == 0
4.进入 if 语句,c = 0;break 跳出第二层 for 循环
5.进入第一层 for 循环,a++ = 101;a <= 200;
6.进入第二层 for 循环,b = 2;b <= 100;
7.if 判定--101 % 2 !=0; 不进入 if 语句,进入 for 循环 b++ = 3........
8.当 b >100 时,不执行 if 语句。
9.执行 if(c  == 1)
10.打印 a 
以此类推

5 goto语句

goto语句可以实现在同一个函数内跳转到设置好的标号处。(在多层循环中,如果想快速跳出,则可使用 goto 语句)
如果有三层循环,break 只能跳出1层循环,goto 语句能跳出3层循环
语句形式
goto 语句;
   语句:

5.1 例题:

写一个关机程序--------需要用到【system(库函数):可以执行系统命令,需要用到头文件  <stdlib.h>】

6 分支和循环练习题

6.1 猜数字游戏

(1)自动生成1~100的随机数
(2)玩家猜数字,根据猜测数据的大小给出大了,或小了的反馈,直至猜对
需要用到的知识点
1.rand
c语言提供了一个函数叫 rand ,这个函数是可以生成随机数的,函数原型如下:
        int rand (void)
rand 函数会返回一个 伪随机数 这个随机数的范围是0~RAND-MAX是(大部分值为32767).    范围为0-32767
rand 函数的使用需要包含一个头文件:<stdlib.h>
由于生成的数为 伪随机数(真正的算法是不知道下一次的值是多少) 所以,无论再重新执行多少次,rand函数生成的数字不变
rand函数是对一个叫“ 种子 ”的基=基准值进行运算生成的随机数。
之所以每次产生的随机数是一样的,是因为 rand 函数生成随机数的默认种子是 1 。如果要生成不同的随机数,就要让种子是变化的。 就需要用到 srand函数
2.srand
c语言提供了一个函数叫 srand ,用来随机数的生成器,其原型如下:
        void srand (unsigned int seed(种子));
程序中再调用 rand 函数之前先调用 srand 函数,通过srand 函数的参数 seed(种子) 来设置 rand 函数生成随机数的时候的种子,只要种子在变化,生成的随机数就变化起来了。
       
3.time    (用时间作为种子)
我们如果想要让 rand 产生随机数,就必须让 srand()是一个变化的值,就需要用到 time 作为种子,因为时间随时都会变化
time 函数会返回当前的日历时间,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒。返回的类型是time_t类型的,time_t类型本质上其实就是32位或者64位的整型类型。
time函数的参数 timer 如果是非NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存中带回去。如果 timer 是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做: 时间戳
time函数的时候需要包含头文件:<time.h>
第一次
第二次
解读
srand((unsigned int)time(NULL));// 设置随机数的生成起点(种子)
4.设置随机数的范围
如果不加限制rand 生成的随机数的范围:0-32767.所以我们要加以限制
如下
void 表述函数不返回任何值
游戏
  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值