分支循环语句

前言:C语言是结构化的程序设计语言!而所有的结构又可大致分为三种,分别是:顺序结构,选择结构,循环结构。

分支结构即选择结构,顾名思义,使用选择结构可以帮助我们进行选择,进行判断;一般通过 if , switch实现,而循环结构一般通过for ,while,do while实现。

其中,if和for使用频率较高,do while 一般适用于特定的场景。

1.if语句

 1.1 if

if语句格式如下:
1.if ( 表达式 )
2.语句

表达式为真,则执行语句;为假反之 

eg.

#include <stdio.h>
int main()
{
  int num = 0;
  scanf("%d", &num);
  if(num % 2 == 1)
    printf("%d 是奇数\n", num);
   return 0;
}

1.2  else

通常使用if语句时,不会单独使用if,而是使用 if...else 的形式。

就如同他们的中文翻译一样,if的表达式为真,则执行if后的语句;为假则执行else后的语句;

不过需要注意的是:if只对第一个分号前的语句负责,如果需要if负责更多的语句,则需要将它们放入{}内;类似地,else也是同样的道理

eg.

#include <stdio.h>
int main()
{
  int age = 0;
  scanf("%d", &age);
 if(age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句
  {
    printf("成年了\n");
    printf("可以谈恋爱了\n");
  }
   return 0;
}

1.3  嵌套if

if...else 语句中,else可以和另一个if连用,构成多重判断

在嵌套中,一般遵循就近原则,即else和最近的if构成if......else语句。

eg.

#include <stdio.h>
int main()
{
   int a = 0;
   int b = 2;
    if(a == 1)
      if(b == 2)
      printf("hehe\n");
    else
      printf("haha\n");
    return 0;
}

上面代码的排版模式,很容易让人以为else是与第一个if匹配。但根据就近原则,else与第二个if匹配。

2.switch语句

2.1 switch与if语句

与if语句类似,switch语句也可以帮我们进行选择,

也可以将switch 语句理解为

是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易

用、可读性更好的形式。

eg.

#include <stdio.h>
int main()
{
   int n = 0;
   scanf("%d", &n);
   if(n%3 == 0)
       printf("整除,余数为0\n");
   else if(n%3 == 1)
           printf("余数是1\n");
        else
          printf("余数是2\n");
   return 0;
}

一个判断被3整除的程序用if写如上,而用switch写如下:

eg.

#include <stdio.h>
int main()
{
   int n = 0;
   scanf("%d", &n);
   switch(n%3)
   {
   case 0:
        printf("整除,余数为0\n");
        break;
   case 1:
        printf("余数是1\n");
        break;
   case 2:
        printf("余数是2\n");
        break;
   }
    return 0;
}

两者效果相同,但switch语句的可读性会更好一些,也更不容易出错

2.2 switch语句中的break和case

从上面的例子中,可以轻易地发现ifswitch的差别:

比较明显的就是switch中有casebreak,

值得注意的是

1.case后面只能接数字与数字之间有空格

2.每一个case执行完之后,必须加入break才能跳出语句

2.3 switch语句中的default

先补充一下switch语句的结构:

switch (expression) {
  case value1: statement
  case value2: statement
  default: statement
}

switch后的表达式不能满足value1value2时,则会执行default

eg.

#include <stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);
  switch(day)
  {
   case 1:
   case 2:
   case 3:
   case 4:
   case 5:
         printf("⼯作⽇\n");
         break;
   case 6:
   case 7:
         printf("休息⽇\n");
         break;
   default:
         printf("输⼊错误\n");
         break;
   }
      return 0;
}

至于case和default的顺序问题,问就是没有顺序,只是一般来说会将default放在最后一位

3.while语句

3.1 while和if

while语句与if语句的结构类似

if(表达式)
    语句;


while(表达式)
    语句;

可以说while是循环版的if

3.2 while的执行逻辑

1.执行判断表达式,表达式的值为0,循环直接结束;

2.表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下⼀次判断

4.for语句

4.1 语法形式

for语句可以说是循环语句界的扛把子,在三种语句中使用最多

一般形式如下:

for(表达式1;表达式2;表达式3)
   {
     语句; 
   }

4.2 for的执行流程

一般来说:表达式1为初始化

                  表达式2为判断

                  表达式3为调整

表达式1通常只执行1次,而2,3则在循环中一直判断和调整,直到循环结束

5.do...while循环

一般用于特定的使用场景,所以使用最少

5.1 do...while的语法形式

do{
    语句;
   }while(表达式)
 

5.2 do...while的执行流程

与前两个不同之处就在于:

1.先执行“语句”,执⾏完语句。

2.在去执⾏“判断表达式”,判断表达式的结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束

所以,do...while语句至少执行一次。

eg.

输入一个正整数,判断其位数

#include <stdio.h>
int main()
{
  int n = 0;
  scanf("%d", &n);
  int count = 0;
   do
     {
      count++;
      n = n / 10;
     } while (n);
       printf("%d\n", count);
        return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值