c语言的分支和循环结构

什么是语句?

c语言语句可以分为以下三类:

1.表达式语句:在表达式后面添加一个分号就是表达式语句。例如:“y=x+8;”就是一个表达式   语句。(最常用的表达式语句是复制语句和函数调用语句)

2.复合语句:由多条语句组成,这多条语句用花括号括起来,作为一条语句。执行时,按括号内语句先后顺序依次执行语句。(常用于if的分支语句、循环结构的循环体语句等)

3.空语句:单独的“;”是一条空语句,其功能是计算机不做任何事,空操作一次。(该语句不常用,有时做循环体语句)


分支语句(选择结构)

if语句

1.语法形式    

//单分支if语句
if(表达式)
    语句;     //若表达式成立,则执行语句;若表达式不成立,则执行if语句的后续语句


//双分支if语句
if(表达式)
    语句1;    //若表达式成立,则执行语句1
else
    语句2;    //若表达式不成立,则执行语句2


//多分支if语句
if(表达式1)
    语句1;    //若表达式1成立,则执行语句1
else if(表达式n)
    语句n;    //若表达式n成立,则执行语句n
...
...           //此处省略若干个语句
else
    语句n+1;  //若以上表达式都不成立,则执行语句n+1


//嵌套if语句
if(表达式1)
{
    if(表达式2)
        语句1;
    else if(表达式3)
        语句2;
    ...
    else
        语句n;
}
else if(表达式4)
    语句n+1;
...
else
    语句2n;
    

注意:if判断表达式是否成立返回的值为0/1,1为真,0为假

           当存在多条语句时,需要加上{ }

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

2.else与if的匹配原则

下面看一段代码

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    if(a == 1)               //第一个if
        if(b == 2)
            printf("hehe\n");//第二个if
    else
        printf("haha\n");
    return 0;
}

这段代码会报警告

由于没有控制代码块的缩进及使用{ }来控制,编译器不知道此处的else与哪一个if相匹配。

但是根据else与if的匹配原则:else与前面最靠近它的还没有与其他if匹配过的if匹配,且用花括号可以改变else与if之间的匹配关系。

因此在日常写代码的时候,排版十分重要,我们需要养成一个良好的代码排版习惯。


Switch语句

1.语法形式

switch(整形常量表达式)
{
    case 1: 整形常量表达式1;
    语句1;
    break;
          .
          .
          .
    case n: 整形常量表达式n;
    语句n;
    break;
    default: 整形常量表达式n+1;
}

case决定了语句从哪里进入,break决定了语句从哪里退出。

如果不加break,则继续执行下一case语句,直到走完全部case语句。执行break后,就跳出switch语句。

注意:表达式的值必须为整形常量或者字符型常量

            case语句不要求一定要按顺序写

            default语句可以放在任意位置

            case语句可以为空语句,若为空语句,则公用后面case中的语句组

            default部分可以省略


2.switch语句的嵌套使用

switch(整形常量表达式)
{ 
    case 1:
           语句1;
           break;
...

    case n:
           switch(整形常量表达式)
           {
               case 1:
                      语句1;
                      break;
                   
                  ...
              
               case n:
                     语句n;
                     break;
               default:
                     语句n+1;
                     break;
           }
    default:
           语句n+1;
           break;
}

循环语句(循环结构)

while循环

1.语法形式

while(表达式)
    循环语句;

此处的括号也是通过表达式的返回值1/0来判断真假,从而判断是否执行循环语句。

while语句是先判断,后执行


2.while循环中的break与continue

break:强制终止循环,跳出循环后,转循环语句的后续语句执行(break语句只能跳出一层循环,若想要跳出多层循环需使用goto语句)

continue:跳过循环体中余下的语句,并继续执行下一次循环

由以上定义可以推出,while循环结构中,break用于永久终止循环,而continue只终止本次循环,跳转到下一次循环的判断部分。


for循环

1.语法形式

for(表达式1,表达式2,表达式3)
    循环语句;

表达式1:初始化部分,用于初始化循环变量

表达式2:条件判断部分,用于决定循环什么时候终止

表达式3:调整部分,用于循环条件的调整

for循环的三个表达式均可省略,但是,for循环的判断部分如果被省略,则判断条件恒为真/为1(即死循环),因此不建议随意省略判断部分

for循环的控制变量是可以存在多个的

建议:1.不可以在for循环体内改变循环变量,防止for循环失去控制

            2.建议for语句的循环控制变量的取值采用“前闭后开区间”的写法

               (  比如for(i = 0;i <10;i++))


2.for语句的执行过程

    1.先计算表达式1

    2.计算表达式2,若其值为真,执行循环体语句后转第3步;若其值为假,则跳出循环

    3.计算表达式3,然后转第2步继续


3.for循环中的break与continue

与while循环中基本一致


4.for循环的嵌套结构

for(表达式1,表达式2,表达式3)
{
    for(表达式4,表达式5,表达式6)
    {
      循环语句;
    }
}

do while循环

1.语法形式

do
{
    循环语句;
}while(表达式);

do while语句是先执行,后判断。(循环至少会执行一次)


2.do while循环中的break与continue

与while循环中基本一致


goto语句

1.一般形式: goto标号; 

2.功能:跳转到标号所标识的语句执行。其中,标号按照标识符的规则命名。

注意:goto语句使用不当会降低程序的可读性,因此不提倡在程序中使用goto语句

            goto语句可以跳出多层循环

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值