手写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进行不同范围的考察!



相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
77 5
|
2月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
33 8
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
45 6
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0
|
2月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
C语言 Windows
《C语言及程序设计》程序阅读——三种循环语句
 返回:贺老师课程教学链接  读程序,写出运行结果,并与计算机运行的结果进行对照(1) #include &lt;stdio.h&gt; int main( ) { char c1,c2; for(c1='0',c2='9'; c1&lt;c2; c1++,c2--) printf("%c%c", c1, c2); printf("\n");
1072 0
|
13天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
34 10
|
13天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
33 9
|
13天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
29 8