首页 > 其他分享 >《重生到现代之从零开始的C语言生活》—— 分支和循环

《重生到现代之从零开始的C语言生活》—— 分支和循环

时间:2024-07-27 12:59:22浏览次数:7  
标签:语句 执行 C语言 while 从零开始 表达式 重生 else 循环

前言:因为C语言是结构化的程序设计语言,这里面的结构指的是顺序结构,选择结构,循环结构,在日常生活中,所见的事都能拆分成这几个结构或者这三种结构的组合。

if语句

if

if在英文中有如果的意思,在C语言中意思相似

if (表达式)
   要执行的语句

如果表达式成立(为真),则执行语句,如果不成立(为假),则不执行该语句,可以用简单的代码来实现一个分支结构

要强调的是,在C语言中,0为假,非0为真,意思是不管表达式不成立或者是表达式的真实结果真的为0,那么下面的语句都不会执行,有些人很难会把结果的不成立和准确的数字联系起来(我也这样)

else

elseif语句中同样重要,else在C语言中与if搭配起来就是

if(表达式)
  要执行的语句
else
  会怎么样

按照我们能理解的话来形容就是“如果表达式成立,那么执行语句,否则(表达式不成立)会怎么样”
举个栗子:

if(今天晚上交作业)
   不用挨打
else
   要挨打

这个代码的语法意思是如果今天晚上交作业就不会挨打,否则就会挨打

要注意的是,if和else都默认控制一条语句,如果想让他控制多条语句,那么就要用{ }来把想让他们控制的语句包住

if(今天晚上交作业)
  不用挨打
  有鸡腿吃
else
  要挨打

如果晚上交作业,在此代码的前提下只控制着不用挨打,不能控制吃鸡腿
但如果加了{}

if(今天晚上交作业)
 { 
 不用挨打
 有鸡腿吃
  }
else
  要挨打

这样,今天晚上交作业就能控制不用挨打和晚上吃鸡腿啦

嵌套

if…else…语句中可以在嵌套一个if…else…达到多重判断的效果
举个例子

if(今天晚上交作业)
   不用挨打
   {
   if(作业完成的好)
     有鸡腿
     }
else
   要挨打

代码在此语法结构的意思是,如果晚上交作业,那么就不用挨打,如果还写的好,那么就有鸡腿吃,如果晚上不叫作业,那么就要挨打

这时有人会问了:“为什么嵌套的if要在大括号里头啊”,这就牵扯到了另一个问题,悬空else问题,因为else总是和离他最近的if匹配,以免产生歧义,所以我们在嵌套时习惯打一个大括号来区分(当然如果嵌套的是一个完整的if…else…语句或者没有else又或者不加逻辑也正确那么可以选择不加,看自己的判断哦)

关系操作符

我们在写表达式时经常会写到两个变量的关系,这时我们就会用到关系操作符。关系操作符主要有:

  • >大于运算符
  • <小于运算符
  • >=大于等于运算符
  • <=小于等于运算符
  • ==相等运算符
  • !=不相等运算符

有趣的来了,前面我有讲过,C语言中0表示假,非零表示真(大多数为1),所以如果是这样1>2,那么他返回的值的值为1
所以如果连等3<4<5,那么他先判定3<4,判定结果为真,返回值1,随后判定1<5,所以连等的结果可能正确,但是过程可能和你想的不同。

如果想达到连等的效果,可以使用条件操作符

逻辑操作符

如果我们想达到1<x<3的效果,这时我们需要逻辑操作符,将他改成x>1 && x<3,&&就是条件操作符
条件操作符有

  • :逻辑取反运算符(改变单个表达式的真假)
  • &&:逻辑与运算符,可以理解为并且的意思,如果两侧都为真,那么判定为真
  • ||:逻辑或运算符,可以理解为或者的意思,如果两侧有一个为真,那么判断为真

条件操作符

条件操作符是一个三目操作符,形式为:(a)?(b):(c)计算逻辑是:如果a为真,那么计算b,如果a为假,计算c

条件操作符可以让你的代码看起来更简洁一点

比如我想知道a和b哪个值更大,我就可以

...
int c = a>b ? a : b;
printf("c")

短路

C语言的逻辑运算符是从左往右计算,如果的左边表达式符合运算条件,就不会再对右边的表达式求职,这种情况称为短路

假如说

if(a < 3|| a > 1)

如果结果满足第一个条件,返回值为1,后面的结果不用判断,直接判断if为真(因为||两边有一个为真就代表表达式为真)

switch语句

Switch语句和if语句的作用相似,都用来实现分支结构,形式是这样:

switch (表达式)
  {
    case a:
    case b:
    default:c
    
    }

就是根据表达式的值来确定case的分支,如果表达式的值是a,那么执行第一个case,如果表达式的值是b,那么执行第二个case,如果都不符合,那么执行default

PS:1. case和后面的数字之间必须有空格。2. 在每一个case语句代码执行完成后,需要加上break才能跳出这个switch语句,如果不加上break呢?

break

如果某一个case语句后面没有break,那么代码就会继续往下执行,可能会执行其他case语句中的代码,直到遇到break或者代码运行结束
所以可以说break语句才是switch语句能够执行的灵魂,实现了能够在分支中控制代码运行的作用,当然break语句不是必须加的,根据实际情况自己做出判断

default

之前在将switch语句的形式中已经讲过,如果都不满足执行case的条件那么就会执行default,有点像if语句中的else
通常情况下我们把default放在所有case的最后但是如果不放到最后也是可以的,只要在switch语句中的任意位置就行

while语句

while语句是一种循环语句,while的语法结构和if的很相似,但是他们的区别是while语句会有循环的效果。

while(表达式)
      要执行的语句;

while的执行流程是:先直接判定表达式,表达式为假,循环直接结束,表达式不为零则执行循环语句,执行完后再判断是否进行下一次循环

for循环

for循环是三种循环中循环最多的,for循环的语法形式是:

for( a ; b ; c )

首先执行a初始化循环变量,接下来执行b的判定部分,如果判断为0则循环结束,如果判断不为零,如果判断不为零则执行循环语句,循环语句执行完后,再去执行c,调整循环变量,然后再去b判断,看是否执行下一次循环
在整个for循环的过程中,a只执行1次,剩下的就是在b和c之间循环
举个例子:

#include<stdio.h>
int main()
{
  int i = 0;
  for(i = 1;i <= 10; i++)
  {
    printf("i");
    return 0;
  }

代码运行顺序是:i = 1,判定i是否<=10,如果i<=10,那么执行printf(“i”),然后i++,然后继续判断i是否<=10,是否进行循环

do while循环

do while循环用的最少,形式也比较特殊

do
  语句
while(表达式)

他和while循环for循环有些不同,while循环for循环都是先判断,再决定是否进入循环语句,而do while循环是直接进入循环体,执行循环语句,然后在执行while循环

do while循环的优点是会直接进行一次语句,然后在执行while循环,所以在do while语句中循环体是至少执行一次
举个栗子:同样都是在屏幕上打印1-10

#include<stdio.h>
int main()
{
  int i = 1;
  do
  {
  printf("1");
  i+=1

   }
   while(i<=10);


    return 0;
 }

注意:目前我所接触的只要do while语句的while表达式后面带

continue

continue语句会直接跳过cintinue后面的语句,例如:

#include<stdio.h>
int main()
{
  int i = 1;
  do
  {
  if(i == 5)
    continue;
  printf("1");//如果continue运行,那么此行跳过
  i+=1//如果continue运行,那么此行跳过

   }
   while(i<=10);


    return 0;

今天的就讲完啦,如果有错误大家多多提意见,大家一起进步!!!

标签:语句,执行,C语言,while,从零开始,表达式,重生,else,循环
From: https://blog.csdn.net/yttandb/article/details/140675967

相关文章

  • C语言day04(输入输出、垃圾字符、分支语句)
    C语言day04【1】按照字符输入输出1》输出:putchar定义格式:intputchar(intc);功能:按照字符输出,向终端输出一个字符参数:要输出的字符的ascii值、字符返回值:输出字符的ASCII值2》输入:getchar定义格式:intgetchar(void)功能:按照字符输入,从终端输入一个字符参数:无......
  • C语言day05(循环语句)
    C语言day05【1】循环语句1》for循环语法:定义变量for(表达式1;表达式2;表达式3){//循环执行的语句块}表达式1:赋初始值表达式2:控制循环执行的语句(进入循环的条件或终止循环的条件)表达式3:递增或递减执行顺序:执行顺序:定义变量,执行表达式1,判断表达式2是否成立......
  • 从零开始搭建博客系列-终
    结束,也是新的开始。‍不知不觉也写了接近30篇博客了,也帮助到了很多人,甚是欣慰。本文就做一个小结吧......
  • 从零开始搭建博客系列-终
    结束,也是新的开始。‍不知不觉也写了接近30篇博客了,也帮助到了很多人,甚是欣慰。本文就做一个小结吧......
  • C语言初识指针
    概述:本文章主要介绍C语言中指针最基础和核心的知识点。内存:在学习指针之前,让我们先了解内存空间、内存是如何编号、以及内存单元的大小。内存空间:内存空间的分配类似于日常生活中对空间的管理。我国国土面积960万平方公里,为加强对各个地区的管理,设立了省、市、区等行政单......
  • c语言学习第三期
    1.if语句2.switch语句3.while循环4.for循环5.dowhile循环6.break和continue7.goto语句 1.if语句1.1ifif语句的语法形式如下: 表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式......
  • 入门C语言Day19——猜随机数游戏
    之前学了分支与循环的很多内容,所以今天可以试着来运用之前的知识来试着写一些有趣的程序——猜随机数游戏。(当然,还有一些知识要补充。)这个多数人都应该有所耳闻,就是规定一个数字范围,然后去猜数字,根据反馈去调整所猜的数字直到猜对。所以我们假定电脑生成的随机数为1~100,并且......
  • 学习c语言第十四天(调试+练习)
    一、调试所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心有愧就必然需要掩盖,那就一定会有迹象,迹象越多就越容易顺藤而上,这就是推理的途径。顺着这条途径顺流而下就是犯罪,逆流而上,就是真相。1.什么是调试调试(英语:Debugging/Debug),又称除错,......
  • C语言大师之路:从零到王者/新手入门(3)选择语句
    序(一些闲话)我希望我的语言不要像专业书那样让人眼花缭乱,所以当我解释语法时,我会尽量避免使用太多专业术语,让说明更容易理解。我会用通俗易懂的语言来解释,而不是像专业书籍那样让人感到困惑。本人计划通过文章分享C语言的核心知识点和学习心得。鉴于仍处于学习阶段,文章中可......
  • C语言大师之路:从零到王者/新手入门(4)循环语句
    序(一些闲话)我希望我的语言不要像专业书那样让人眼花缭乱,所以当我解释语法时,我会尽量避免使用太多专业术语,让说明更容易理解。我会用通俗易懂的语言来解释,而不是像专业书籍那样让人感到困惑。本人计划通过文章分享C语言的核心知识点和学习心得。鉴于仍处于学习阶段,文章中可......