C语言分支和循环语句

本文详细介绍了C语言中的分支语句(if和switch)、循环语句(while,for,do-while),包括它们的语法、使用规则以及逻辑运算符和短路的概念。特别强调了嵌套结构和不同循环类型的对比与特点。
摘要由CSDN通过智能技术生成

    这篇文章将梳理分支和循环语句的一些重要知识点。

   首先,分支语句分为if语句和switch语句;循环语句分为do while循环、while循环和for循环。

if语句的基本语法为:

if(表达式)
  语句1;

若if后面要根多条语句,则需要用{}括起来,如下:

if(表达式)
  {
     语句1;
     语句2;
     语句3;
  }

else是跟着if语句一起用的,基本语法如下:

if(表达式)
   语句1;
else
   {
      if(表达式2)
        语句2;
      else
        语句3;        
   }
if(表达式)
  语句1;
else
  语句2;

默认情况下,if和else的后边只能跟一条语句,若要跟多条语句,需要用{}括起来。

嵌套if语句需注意的是,else只和最近的if配套,所以敲代码的时候一定要养成一个好习惯,自动对齐。

关系操作符

   当一个变量和常量比较相等的时候,建议将常量放在==的左边。

   多个关系运算符不宜连用,例a<b<c

< ⼩于运算符

• >= ⼤于等于运算符

• <= ⼩于等于运算符

• == 相等运算符

• != 不相等运算符

条件操作符:

    条件操作符也称三目操作符,需要接受3个操作数。基本格式为exp1 ? exp2 : exp3

   条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如       果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果。例如:

if(a > 5)
  b = 3;
else
  b = -3;
那段代码可转化为
b = (b > 5?3:-3)
if(month >= 3 && month <= 5)

   逻辑运算符分为  !:逻辑取反运算符。其作用是改变单个表达式的真假。

                             &&:逻辑与运算符。(两侧表达式都为真,则为真)

                             ||:逻辑或运算符。(两侧表达式有一个为真,则为真)

   在&&和||运算符里值得注意的是,短路

短路

   C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个     顺序是 保证的。 如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种     情况称为“短路”。

if(month >= 3 && month <= 5)

对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。

在||操作符里面

if(month == 12 || month==1 || month == 2)

操作符的左操作数的结果不为0时,就⽆需执⾏右操作数。像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短 路求值。

接下来让我们看看switch语句

switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式。

switch (expression) {
 case value1: statement
 case value2: statement
 default: statement
}

上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀。

注:

• switch 后的 expression 必须是整型表达式

• case 后的值,必须是整形常量表达式

switch语句中的break

只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续往下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。例:

#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
 case 0:
   printf("整除,余数为0\n");
 case 1:
   printf("余数是1\n");
 case 2:
   printf("余数是2\n");
 }
 return 0;
}

若输入7,输出结果为:余数是1

                                      余数是2

default

switch (expression) {
 case value1: statement
 case value2: statement
 default: statement
}

switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏ default ⼦句。

while循环

基本语法:

while(表达式)
  语句1;

例如:

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

此代码实现了打印从1~10的数。

For循环

基本语法为

for(表达式1; 表达式2; 表达式3)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号

表达式1 ⽤于循环变量的初始化

表达式2 ⽤于循环结束条件的判断

表达式3 ⽤于循环变量的调整

举个例子,在屏幕上打印1~10的值 可以用for循环来写,其代码如下、

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

 return 0;
}

while循环和for循环的对⽐

for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部 分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些。

do-while 循环

基本语法为

do
 语句;
while(表达式);

while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。简而言之,上来直接干,然后再循环。

  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值