【C基础篇】选择结构与循环控制

一、选择结构

1.if语句的基本形式

if语句首先要判断表达式的值,然后根据该值的真假情况决定去执行后续的流程图。
在这里插入图片描述

//模拟员工考勤 工号和密码都对则考勤成功
#include<stdio.h>
int main()
{
    int id,passwd;
    printf("请输入您的工号:\n");
    printf("请输入您的密码:\n");
    scanf("%d",&id);
    scanf("%d",&passwd);
    if(id == 12 && passwd == 14)
    {
        printf("考勤成功!\n");
    }
    if(id != 12 && passwd != 14)
    {
        printf("对不起,您输入的工号或者密码错误!\n");
    }
    return 0;
}

2.if…else 语句

if语句只给出了条件为真是,需要执行的操作,当条件为假是,未给出相应的执行操作。

if (表达式)
{
    语句1;//表达式值为真值,则执行此语句
}
else
{
    语句1;//表达式值为假值,则执行此语句
}

3.else if语句

利用if和else关键字的组合,可以实现else if语句,对一系列互斥条件进行检验,从而解决较为复杂的判断和决策问题。

if(表达式1)
{
    语句1;//表达式1为真,执行此语句
}
else if(表达式2)
{
    语句2;//表达式2为真,执行此语句
}
...
else if(表达式n)
{
    语句n;//表达式n为真,执行此语句
}
else
{
    语句n+1;//前面所有判断都不成立,执行此语句
}

4.if的嵌套形式
if语句中可以包含一个或多个if语句,称之为if的嵌套。

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

4.条件运算符

条件运算符可以对一个表达式中值的真假进行检验,根据检验结果返回另外两个表达式中的一个。

max = (a > b) ? a : b;

//等效表达
if(a > b)
{
    max =  a;
}
else
{
    max = b;
}

5.switch语句

switch是多路分支选择语句

switch (表达式)
{
case 情况1:
    语句1;
    break;
case 情况2:
    语句2;
    break;
    ...
case 情况n:
    语句n;
    break;
default:
    break;
}

6.if…else语句和switch语句区别

语法的比较

  • if需要配合else关键字;switch需要配合case关键字;
  • if语句先对条件进行判断,而switch语句是后进行判断。

语法的比较

  • if…else适用少量的检验
  • switch每个case检验速度相同,default比case快。
  • 高于4个检验时,使用switch语句较好。

二、循环控制

1.while语句

使用while语句可以解决当谋个条件满足时反复执行谋个循环体的问题。

while (表达式)
{
    语句块(循环体);
}
//无法终止的循环被称为死循环或无限循环

2.do…while语句

在某些情况下,不论条件是否满足,都需要执行一次循环过程,可以采用do…while语句。

do
{
    语句块(循环体);
} while (表达式);
/* === 执行过程 === */
// 先执行一次循环体,然后判断表达式
// 表达式为真,返回重新执行循环体语句
// 再次判断表达式,表达式为假,循环结束

while和do…while区别:
while先判断,后执行;
do…while先执行后判断。

3.for循环

for语句的一般表达式

for (表达式1; 表达式2; 表达式3)
{
    语句块(循环体);
}

4.循环嵌套

while与while

while (表达式)
{
    语句块;
    while (表达式)
    {
        语句块;
    }
    
}

do…while和do…while

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

for和for

for (表达式; 表达式; 表达式)
{
    语句块;
    for (表达式; 表达式; 表达式)
    {
        语句块;
    }
    
}

类似嵌套形式多样。

三、转移语句

1.goto语句

goto语句为无条件转移语句,可以使程序跳到函数内部的任意一条可执行语句处。
goto关键词后面带一个标识符,该标识符是同一个函数内某条语句的标号,标号可出现在任何可执行语句的前面,并且以一个:作为后缀。其一般形式如下:

goto 标识符;
//"下一步" or "退出"
#include<stdio.h>
int main()
{
    int num;//循环变量
    int putnum;//输入数值
    for(num = 1;num <10;num ++)
    {
        printf("当前次数:%d\n",num);
        do
        {
            printf("请输入一个数:\n");
            printf("(0 exit,99 continue)\n");
            scanf("%d",&putnum);
            if(putnum == 0)
            {
                goto exit;
            }
        }
         while (putnum != 99);
    }
    exit:
        printf("退出程序!\n");
    return 0;
}

2.break语句

有时候会遇到不管表达式检验结果如何,都需要强行终止循环,这时可以使用break语句;break语句用于终止并跳出当前循环,然后继续执行后面的程序。
break语句不能用于除循环语句和switch语句之外的其他任何语句中;另外,在多层循环嵌套下,使用break语句只能跳出当前循环。

#include<stdio.h>
int main()
{
    int i;
    for ( i = 0; i < 15; i++)
    {
        if(i == 10)
        {
            printf("Break here\n");
            break;
        }
        printf("the number is:%d\n",i);
    }
    return 0;
}

3.continue语句

某些情况下,程序需要循环头部继续执行,而不是跳出循环,此时可以使用continue语句。
continue语句作用是结束本次循环,即跳过循环体中尚未执行的部分,直接执行下一次的循环操作。

#include<stdio.h>
int main()
{
    int i;
    for ( i = 0; i < 15; i++)
    {
        if(i == 10)
        {
            printf("Continue here\n");
            continue;
        }
        printf("the number is:%d\n",i);
    }
    return 0;
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值