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



目录
相关文章
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
332 5
|
5月前
|
C语言
C语言分支和循环语句
分支语句由`if-else`构成,用于根据不同条件执行相应代码。`else`会与最近未配对的`if`结合,多个条件可用`else if`实现。若连续使用`if`,各条件互不影响。嵌套结构可在`if`中再加入`if-else`。此外,`switch`语句适用于多分支选择(注意表达式不能为浮点数,`case`后需加`break`)。循环语句包括`for`、`while`和`do...while`,注意`do...while`末尾需加分号。循环中,`break`直接终止循环,`continue`跳过当前循环剩余部分,但`for`的语句三仍会执行,而`while`中位置影响效果。
110 0
|
9月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的循环语句
本文介绍了C语言中的三种循环语句:`while`、`do-while`和`for`,并详细解释了它们的语法格式、执行流程及应用场景。此外,还讲解了循环控制语句`break`和`continue`的使用方法。希望这些内容能帮助你在编程道路上不断进步,共同成长!
833 0
一文彻底搞清楚C语言的循环语句
|
10月前
|
C语言
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
158 19
|
10月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
282 18
|
10月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
285 18
|
10月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
225 13
|
10月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
268 6
|
10月前
|
C语言
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
562 5
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
193 8