C语言初阶——分支与循环

简介: 从程序流程的角度来看,程序可以分为三种基本结构, 顺序结构、选择(分支)语句、循环语句。在C语言中语句分为这五类:1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句。本文主要是介绍控制语句,也就是前面提到的三种基本语句,它们由特定的语句定义符组成,C语言有九种控制语句

目录


前言

正文

语句

分支语句

1.if 语句

2.switch语句

循环语句

1.while语句

2.do while语句

3.for语句

4.goto语句

总结


前言


 经过前面文章的介绍,我们已经算是摸到C语言的门槛了,接下来就是踏进门槛,入门C语言。让我们从分支和循环语句开始!


 注意:图片中代码的头文件位于文件最顶部,因截图无法截取,所以默认已引头文件

181c4a5d74683d3602a4adf3e1001b5.png

正文


语句


从程序流程的角度来看,程序可以分为三种基本结构, 顺序结构、选择(分支)语句、循环语句。在C语言中语句分为这五类:1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句。本文主要是介绍控制语句,也就是前面提到的三种基本语句,它们由特定的语句定义符组成,C语言有九种控制语句:


1.条件判断语句(分支语句):if 语句、switch 语句


2.循环执行语句:do while 语句、while 语句、for 语句


3. 转向语句:break语句、goto语句、continue语句、return语句


控制语句一般都会有一个匹配伙伴— {  }(语句块),用于理清逻辑从属关系。


分支语句


1.if 语句


if 是如果的意思,小明考上了北大,小王考上了地瓜,如果(if)小王当时好好学习,说不定能考上北大旁边的重点大学。这就是选择,如果人生的每一步都能做出正确选择,那肯定是开挂人生。

e270d0410a1f0c6e21abb092719eb94.png

开个玩笑,让我们直接开始学习 if 语句


9775ffbfc644bf16c0888ebfb4f0fa2.png

2c7e2c452aea5d76d64fe0d19f196f2.png

9a475dac0a6c55ebf09b04ca88cb5f6.png

if 语句使用示例及分析

a306eb263552c37288c56cfdbc8d099.png

//if模拟成绩评判
int main()
{
  int score = 0;
  printf("请输入分数:>");
  scanf("%d", &score);
  if (score >= 90)
    printf("A\n");
  else if (score >= 80)
    printf("B\n");
  else if (score >= 70)
    printf("C\n");
  else if (score >= 60)
    printf("D\n");
  else
    printf("E\n");
  return 0;
}

我们可以根据 if 的知识写出简单程序了

a7c21158ee0dde7c8a25dfd0ef74b31.png

//输入一个数,判断是否为奇数
int main()
{
  int num = 0;
  printf("请输入一个数:>");
  scanf("%d", &num);
  if ((num % 2) == 0)
    printf("输入数是偶数\n");
  else
    printf("输入数是奇数\n");
  return 0;
}


if 使用注意事项:if 语句在判断时,若为变量和常量相比较,可以把常量写在左边,这样可以有效避免少些一个 = 的小问题。else 语句在使用时要注意与 if 的匹配,避免悬空问题。如果对于各语句间的逻辑模糊不清,可以通过添加语句块 { } 的方式使程序可读性更强。if 语句可以嵌套使用。


2.switch语句


作为分支语句中的第二种语句,switch语句的出现可谓是弥补了 if 多分支语句过于冗长的缺点,switch语句能通过短短几行代码实现 if 多分支多语句的功能,比如输入1,打印星期一,输入5,打印星期五,让 if 来完成这个需求需要7个 if else语句,而交给switch只需要7句case。

5c2c6f1edd2a5d3ac874c6674704e92.png

22b73cfefa27c396dbc38701f8e15e3.png


switch语句使用示例及分析


6b9e2797834b1a96da9c819a598c916.png

//switch示例
int main()
{
  int num = 0;
  printf("查询是否可以休息:>");
  scanf("%d", &num);
  switch (num)
  {
  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;
}

switch语句使用注意事项:switch中的语句必须是整型表达式。case后必须是整型常量表达式。break语句的实际效果是把语句列表划分为不同的分支语句。switch语句可以嵌套使用。


循环语句


1.while语句


while语句可以实现循环需求,比如想要打印数字1~100,只需要把while语句中的表达式写为n<=100即可,跟 if 一样,while语句表达式为假就不执行。

e68c76b2db2ad487f8192d99ce05de4.png


ae94e81f9aac4c13e22b8d8fdf07cfb.png

while语句使用示例及分析

236f71faa7cc1c8bf5640db9ffe53fa.png

//while语句-含break和continue
int main()
{
  int n = 0;
  while (n <= 15)
  {
    n++;
    if (n == 5)
      continue;
    if (n == 10)
      break;
    printf("%d ", n);
  }
  return 0;
}

while使用注意事项:while中的break是用于永久终止循环的。continue是用于终止本次循环的。在使用while循环时要注意表达式逼近的语句,比如上面的n++,如果不加这句话,while会变成死循环


2.do while语句


作为while语句的兄弟,do while语句跟while语句太像了,while中的知识在do while中都能用,唯一不同的是do while要先执行一次,再进行判断。

72f968e3c8700f8522a912c27c2a1fb.png

4a71117f2bbd80799e9769c5dc02b79.png

do while语句使用示例及分析

312fe4132b33fca1fd8abafc30bede2.png

//do while
int main()
{
  int n = 0;
  do
  {
    n++;
    if (5 == n)
      continue;
    if (8 == n)
      break;
    printf("%d ", n);
  } while (n <= 10);
  return 0;
}


do while使用注意事项:do while的特点是先执行一次,所以在使用时要注意是否满足需求。


其他注意事项可以参考while语句


3.for语句


for循环是循环语句中最常用的,也是最好用的,因为for循环集成了计数器重置,循环终止条件,计数器自增三项功能,只需要把for循环内的条件设置好,直接往语句块内放执行语句就行了


fe743d34c2e87bf31bb823c0e24b39b.png0ef8b7e3b11aa8cbe7dfbf4d0605484.png


for 语句使用示例及分析

2231b9ec0e014c4b6c875564e74a7f4.png

//for循环
int main()
{
  int i = 0;
  for (i = 0; i <= 10; i++)
  {
    if (i == 5)
      continue;
    if (i == 9)
      break;
    printf("%d ", i);
  }
  return 0;
}


一道for 语句笔试题

//请问循环要循环多少次?
#include <stdio.h>
int main()
{
 int i = 0;
 int k = 0;
 for(i =0,k=0; k=0; i++,k++)
        k++;
 return 0;
}

3e0d23d80e5412438f85a7ee97ba0ac.png


for 语句使用注意事项:不可在for 循环体内修改循环变量,防止 for 循环失去控制。建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

循环例题1.计算n的阶乘

2feff192e44cb57cdf896e241e91dcb.png

//计算n阶乘
int main()
{
  int n = 0;
  scanf("%d", &n);
  int i = 0;
  int fac = 1;
  for (i = 1; i <= n; i++)
  {
    fac = fac* i;
  }
  printf("%d", fac);
  return 0;
}

循环例题2.二分查找

二分查找又称折半查找,指在一个有序数组中查找某数,从中间开始比较。若数比中值小,则说明中值找大了;反之说明找小了,因为中值需要依靠左右端,所以二分查找本质上一个左右端移动的问题,可以用循环解决。

c84c22da9c3e22e9a10babacf819f5c.png

//二分查找
int main()
{
  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
  int key = 5;
  int left = 0;
  int right = sizeof(arr) / sizeof(arr[0]) - 1;
  while (left <= right)
  {
    int mid = left + (right - left) / 2;
    if (key < arr[mid])
      right = mid - 1;
    else if (key > arr[mid])
      left = mid + 1;
    else
    {
      printf("找到了,下标是%d\n", mid);
      break;
    }
  }
  if (left > right)
    printf("没有找到这个数\n");
  return 0;
}

4.goto语句


C语言提供了可供滥用goto语句和标记跳转的符号。goto语句用的比较少,因为其可以随意跳转的属性,极有可能导致代码运行错误,但只要使用得当,就可以用来终止程序在某些深度嵌套的结构的处理过程,比如多层for循环(一个break只能跳出一层),如果我们想直接跳出最外层,只需要一个goto语句。

626cf64439cc81237f56c03cac51b6b.png

e4d7c65f5062140d816e3df2e02a59d.png


goto 语句使用示例及分析

cdbd10ef22fee6eda26a48327ae3817.png


//goto
int main()
{
  int i = 0;
  int j = 0;
  int k = 0;
  for (i = 0; i < 5; i++)
  {
    for (j = 0; j < 5; j++)
    {
      for (k = 0; k < 5; k++)
      {
        if (i == 3 && j == 3 && k == 3)
          goto flag;
      }
    }
  }
flag :
  printf("%d %d %d\n",i,j,k);
  return 0;
}

goto 语句使用注意事项:在goto 前提前预判程序走向,避免造成死循环。

语句构成的关机小程序

2a0fab514504a523476fab7e1461bdb.png

//关机小程序
#include<windows.h>
int main()
{
  char input[10] = { 0 };
  system("shutdown -s -t 60");
flag1 :
  printf("警告!你的电脑将在60秒内关机,输入 我是猪 取消关机\n\a");
  printf("请输入:>");
  scanf("%s", input);
  if (0 == (strcmp(input, "我是猪")))
  {
    system("shutdown -a");
    printf("取消成功!\n");
  }
  else
  {
    printf("请尽快输入解除口令,不然电脑即将关机!\n");
    goto flag1;
  }
  return 0;
}


总结


 从以前的笼统解释,到现在的详细分析,变的是内容,不变的是初心。分支与循环语句的知识我已经给大家讲解完毕了,包括具体用例和注意事项等,还有结尾的关机小程序很有意思,如果有需求,还可以加上倒计时之类的东西,让整个程序更有压迫感。以上就是本篇文章的全部内容了,如果觉得写的还不错的话可以一键三连,当然一个小小的点赞也能让我很开心,对知识的分享欲是我继续创作的最大动力,希望大家可以期待我的下篇博客——函数。


 如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正!

bfbf8aa0f948341ec557cd3c550f2f6.png



目录
相关文章
|
14天前
|
C语言
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
|
1月前
|
C语言
利用C语言中的while语句实现循环
利用C语言中的while语句实现循环
18 0
|
1月前
|
C语言
C语言的循环程序
C语言的循环程序
11 0
|
1月前
|
程序员 Python
16.C语言:用switch语句实现多分支选择结构
16.C语言:用switch语句实现多分支选择结构
11 0
|
1月前
|
C语言
介绍c语言中的分支,循环
介绍c语言中的分支,循环
22 0
|
22天前
|
C语言
【C语言】“分⽀与循环第一章:开启创新之门,探索无尽可能性的第一篇章“2
【C语言】“分⽀与循环第一章:开启创新之门,探索无尽可能性的第一篇章“2
|
1月前
|
机器学习/深度学习 程序员 编译器
c语言从入门到实战——分支和循环
C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实 现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。 我们可以使用 if 、 switch 实现分支结构,使用 for 、 while 、 do while 实现循环结构。
80 0
c语言从入门到实战——分支和循环
|
1月前
|
C语言
20.C语言:用continue语句提前终止循环
20.C语言:用continue语句提前终止循环
14 0
|
1月前
|
C语言
19.C语言:用break语句提前终止循环
19.C语言:用break语句提前终止循环
23 0
|
1月前
|
程序员 Python
17.c语言:用switch语句实现多分支选择结构
17.c语言:用switch语句实现多分支选择结构
29 0