C语言 分支与循环 (个人总结 已更新~)

 C语言是结构化的程序设计语言,结构指的是顺序结构、循环结构、选择结构。

首先了解通过 if switch 实现分支结构,for while do while 实现循环结构。

1、if 语句

1.1 if

语法格式:

1.            if (表达式)

2.                     语句

表达式成立(真),语句执行;表达式不成立(假),语句不执行。

1.2 else

语法格式:

1.          if  (表达式)

2.                语句1

3.          else

4.                语句2

练习:输入一个年龄,>=18岁就输出:成年;否则就输出:未成年。

#include <stdio.h>

int main()
{
    int age = 0;
    scanf("%d",&age);
    if(age >= 18)
      printf("成年\n");
    else
      printf("未成年");
    return 0;
}

1.3分支中包含多条语句

如果需要 if 语句同时控制看多条语句,则需要使用 {} 将代码括起来,else 后也可以使用 {} 。

1.4嵌套if

在 if else 语句中,else 可以与另一个 if 语句使用,构成多重判断。

练习:输入一个人的年龄

        年龄<18,打印“少年”

        年龄在18~44,打印“青年”

        年龄在45~59,打印“中老年”

        年龄在60~89,打印“老年”

        如果90以上,打印“老寿星”

#include <stdio.h>

int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age < 18)
    {
        printf("少年\n");
    }
    else
    { 
        if(age <= 44 )
          {
              printf("青年\n");
           }
        else
        {
            if(age <= 59)
            {
                printf("中老年\n");
             }
            else
            {
                if(age <= 99)
                    printf("老年\n");
                else
                    printf("老寿星\n");
            }

        }
    }
    return 0;
}

1.5 悬空else问题

如果有可多个 if 和 else ,else 总是跟最接近的 if 匹配。

2、switch语句

用于判断条件有多个结果的情况。

语法格式:

1. switch (expression)

2.     { 

3.       case  value1: statement

4.       case  value1: statement

5.       default: statement  

6.    }

上述代码中,根据表达式expression不同的值,执行相应是 case 分支,如果找不到对应的值,就执行 default 分支。

注:

  1. switch(expression)语句中的 expression 必须是一个整型表达式,即switch判断的数据必须是整型或者字符

  2. case语句只能带整型常量,包括普通整型或字符,不包括const型数据

  3. break语句的作用是跳出整一个switch结构,没有break程序会略过case往下执行

  4. default语句不是必须的,一般放在最后面(因此不需要break)

2.1 switch 语句中的break

在 switch 语句中使用 break 才能跳出 switch 语句,如果某一个 case 语句的后边没有 break 语句,代码会继续往下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。

因此,switch 语句中 break 语句非常重要,能真正实现分支效果,同时,break 也不是每个 case 语句都得有,具体需要看实际情况。

练习:输入一个1~7的数字,打印对应的星期几

#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
    {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期日\n");
            break;
    }

    return 0;
}

练习:输入1~5,输出的是“工作日”;输入6~7,输入“休息日”。

#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;
      }

    return 0;
}

2.2 switch语句中的default

语法格式:

1. switch (expression)

2.           {

3.             case value1: statement

4.             case value2: statement

5.             default:  statement

6.            }

当 switch 之后的表达式中的值无法匹配代码中的 case 语句时,这个时候需要在 switch 语句中加入 default 子句。

switch 后边的 expression 不是 value1 ,也不是 value2 时,就会执行 default 子句。

2.3 switch 语句中的 case 和 default 的顺序问题

在 switch 语句中 case 子句和 default 子句没有顺序要求,满足实际需求就可以。通常把 default 子句放在最后处理。

3、while 语句

3.1 while 循环

语法格式:

1. while (表达式)

2.            语句;

3.2 while 循环的实践

练习:在屏幕上循环打印 1~10 的值

#include <stdio.h>
int main()
{

    int i = 0;
    while(i <=10)
        {
            printf("%d",i);
            i += 1;
        }
    return 0;
}

练习:输入一个正的整数,逆序打印这个整数每一位

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

4、for 语句

4.1 for 循环

语法格式:

1.   for (表达式1;表达式2;表达式3)

2.            语句;

表达式1 用于循环变量的初始化

表达式2 用于循环结束条件的判断

表达式3 用于循环变量的调整

4.2 for 循环的实践

练习:在屏幕上打印 1~10 的值

#include <stdio.h>

int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)
          {
              printf("%d ",i);
          }
    return 0;
}

练习:计算 1~100 之间3的倍数的数字之和

#include <stdio.h>

int main()
{
    int i = 0;
    int sum = 0;
    for(i = 1; i <= 100; i++)
        {
            if(i % 3 == 0)
                {
                    sun += i;
                }
         }
           printf("%d\n", sum);
           return 0;
}

5、do-while 语句

5.1 do-while 循环

语法格式:

1.      do

2.             语句;

3.      while (表达式);

do-while 循环是先进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。

  • do-while 循环中的 while 语句后面有分号 

5.2 do-while 循环的实践

练习:在屏幕上打印 1~10 的值

#include <stdio.h>

int main()
{
    int i = 1;
    do
     {
        printf("%d ", i);
        i += 1;
     }while(i <= 10);
    return 0;
}

练习:输入一个正整数,计算这个正整数是几位数。

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    int cnt = 0;
    do
    {
        cnt++;
        n /= 10;
    }while(n);
    printf("%d\n",cnt);

    return 0;
}

6、break(退出)与continue(继续)

6.1 运用场景与特点

  • break 关键字只能用于循环(while for do...while)和 switch 语句中,表示结束循环或者跳出switch 语句

  • break 关键字只能跳出最近一层的循环,也就是说,如果有多重循环,只能跳出最靠近 break语句那层循环

  • break 关键字不能单独用于 if 语句中,除非 if 语句外面包含了循环

6.2 逻辑

  • continue 关键字只能用于循环体中(while do...while for),用于提前结束当前循环体后,又从最近一层循环体开始执行

  • continue 关键字不能单独用于 if 语句或者 switch 语句中,除非外面包含了循环

  • break:① 跳出 switch 语句; ② 跳出当层循环体

  • continue:结束当次循环,进入下次循环

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值