手写C语言之分支循环语句-语法详细版(08)

简介: 手写C语言之分支循环语句-语法详细版

前言

前期,我们通过几篇文章了解了C语言的基本语法和大体的框架,认识了什么是C语言,C语言的重点和难点是什么?如何去学习C语言,总而言之,学习是一个不断积累的过程,想要从“量变到质变”,只有不断地练习,不断地总结。

可能有的粉丝朋友或者读者会疑问,为什么这个专栏叫手写C语言系列呢?难道现实的开发和工作中,真的是需要我们手写C语言吗?博主在这里很明确的告诉你,完全不需要,工作等于接触了实际项目,写代码和开发完全不需要死记硬背,只需要掌握基本的框架和思想,至于那些周而复始的语法,你完全可以利用网上的第三方平台,比如:这一篇博客,介绍了分支循环语句的详细的思想和语法,那么如果你在以后的项目实践中,突然短路了,那么此时这一篇博客的重要性就已经显现出来了。


之所以定义为:手写C语言,是因为目前我认为的熟练是自己能够看到题目就可以马上有这个代码的思路,而不是完全的死记硬背,当然,备也需要有规律有技巧的背,前提是你必须要熟练,这样你才可能比较容易得到更高的收获。


本专栏面向的是:


在校大学生,计算机系和对编程感兴趣的同学

C语言小白,需要学习并且通过计算机二级等级考试的同学

平时没有努力的,但是想要期末努力的好学生

计算机大类下的考研党

这是我的初衷,也是我的回忆,为什么这些人群需要手写C语言呢?或者是为什么要达到手写C语言的效果呢?举一个简单的例子,期末考试难不成老师会给你开网络吗?(不排除“高手”),考研过程笔试,你有机会百度查询这个代码应该怎么写,那个函数不记得呢,还可以查查,就算是计算机二级考试,都是只给你比较简单的编译器(没有提示代码的功能),所以手写的目的不是为了不懂得变化,而是为了不变应万变!



废话不多说,我们开启新的知识旅途!


什么是语句?

C语句可分为以下五类:


  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

本文着重讲解控制语句:


控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:


  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。




分支选择语句

if 语句

语法结构:

if(表达式)
{
语句;
}
if(表达式)
{
语句1;
}
else
{
语句2;
}
//多分支
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else
{
语句3;
}

注意为了我们的代码规范,我们应该对于语法的要满足美观而不冗余,复杂但不失逻辑

#include <stdio.h>
int main()
{
  int age = 0;
  printf("请输入你的年龄:");
  scanf("%d", &age);
  if (age < 18)
  {
    printf("少年\n");
  }
  else if (age >= 18 && age < 30)
  {
    printf("青年\n");
  }
  else if (age >= 30 && age < 50)
  {
    printf("中年\n");
  }
  else if (age >= 50 && age < 80)
  {
    printf("老年\n");
  }
  else
  {
    printf("老寿星\n");
  }
  return 0;
}


上面的这个代码就比较的完整的展现了条件分支的语法,代码也是比较的规范的,下面我们看看这个代码:


#include <stdio.h>
int main()
{
  int score = 0;
  printf("请输入你的分数:");
  scanf("%d", &score);
  if (score < 60) printf("不及格!");
  else if (score >= 60 && score <= 80) printf("成绩中等!");
  else printf("成绩不错!");
  printf("输入错误!");
  return 0;
}



首先看到这个代码,你是不是比较的懵,怎么都写在一行上面呢?C语言支持这样的语法,它不会报错,因为语句都是一个分号结束的!后面的最后一个代码,是分支语句都无法管到的,所以要想达到需求,就需要写代码块{}

image.png

image.png

故:最终无论你输入什么都会出现一个输入错误的信息!


#include <stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}



表达式内部的条件是:1则成立,0则不成立

我们来看看下面这个例子:


image.png


感觉很奇怪,为什么这个代码输出和我们预期的设想不一致呢?很显然这个代码虽然语法没有报错,但是存在逻辑错误!在C语言的语句里面,我们需要注意的是,逻辑判断的真假的顺序,如果第一个是满足的,那么它就会成为一个真的条件,及时后面不是满足的条件,这就和我们的运算符比较的类似:&(全部为真才为真,一个为假全为假) 和 |(一个为真就为真,全部为假才为假)


这里显然是满足了第一个条件18>0所以它就为1,然后1<10故成立,所以它就执行了这个分支下面的语句!


再看这里,-1满足大于0故为0,但是0却小于10故成立!


image.png


所以这是我们同学需要注意的一点细节,可能你自己写代码不会这样,但是如果你是参加一些考试或者面试,这个就会作为一个考点来让你很纠结!


悬空else

#include <stdio.h>
int main()
{
  int a = 0;
  int b = 2;
  if (a == 1)
  if (b == 2)
    printf("您好!\n");
  else
  printf("你好呀!\n");
  return 0;
}



这个代码不会打印出来任何东西!


else的匹配:else是和它离的最近的if匹配的。


代码写得好不是对比写的比较深奥,而是养成一个良好的编程


switch语句

switch语句也是一种分支语句。常常用于多分支的情况。


那么这个和if else有什么区别呢?它的优势又在哪里呢?


switch(整型表达式)

{

语句项;

}



switch最大的优势就是,简洁的代码量可以快速执行需要判断的分支


switch和break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。


#include <stdio.h>
int main()
{
  int day = 0;
  printf("请输入星期几(数字):");
  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;
}



image.png


从这,我们就可以发现switch语句的特点了,break是必须的,在每一条语句后面,其次首先定义了一个变量,待用户输入,其次将这个变量传到这个switch括号里面,后面的就可以写case 加结果进行判断!


但是有时候,我们的需求发生了改变,比如输入1-5,那么就输出:工作日,好好工作!输入6-7就输出:假期,多出去走走吧!


image.png


从这里,我们就可以看到break的作用是什么呢?它就是结束这一条语句,如果没有的话就一直往下执行!

break语句 的实际效果是把语句列表划分为不同的分支部分。


通常的一些考试也会对这一个进行考察,对break进行不同范围的考察!



相关文章
|
1月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
67 5
|
26天前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
28 8
|
26天前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
34 6
|
1月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
15 0
|
1月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
6天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
22 6
|
26天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
34 10
|
19天前
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。