初识C语言~第三节:分支与循环

C语言是一种结构化的程序设计语言,共可实现三种语言结构:顺序结构、选择(分支)结构和循环结构。

C语言中用if和switch实现分支结构,用for、while和do while实现循环结构。

下面介绍分支结构:

1.分支结构

分支结构中分为if语句的实现和switch语句的实现,下面介绍if语句:

1.1 if语句

if语句的语法形式:

当表达式的结果为真时,语句将被执行,否则将跳过执行语句。

当有多个分支时,可以有多个if:

有了“如果(if)”,当然就有“否则(else)”。有了else,我们可以将除if之外的表达式结果归在else中,而且不用再在else中写条件。上面的代码也就可以写成如下形式:

int a=0;
scanf("%d",&a);
if(a%2==1)
    printf("a为奇数");
else   
    printf("a为偶数");

当表达式结果有三种及以上,需要执行不同语句时,可以加入else if等嵌套语句

在if中或else中继续嵌套if或else语句。

int a=0;
scanf("%d",&a);
if(a>0)
{  
    if(a%2==1)
        printf("a为奇数");
    else   
        printf("a为偶数");
}
else
    printf("a为非正数");
​

需要注意的是,当不加花括号时,if和else等语句只能执行一条语句,剩下的语句将不归入分支语句中。

int age;
scanf("%d",&age);
if(age>=18)
    printf("成年了\n");
    printf("可以服兵役\n");



当输入18以下时仍会输出“可以服兵役”。

注:C语言中的缩进一般不会对代码运行结果产生影响,因此若if前无花括号,else将与最近的if结合。

1.2 switch语句

switch语句的语法形式:

switch(表达式)
{
    case 常数值1:
                语句
                break;
    case 常数值2:
                语句
                break;
    case 常数值3:
                语句
                break;
.
.
.
    default:
                语句
                break;
}

根据表达式的结果,选择性地进入不同case或default。default表示的是除上面case后跟的常数值外的情况,当以上case都没有被进入时,进入default。

注:

1.default和不同的case之间没有顺序要求,可以任意排布case和default。

2.当任一语句后未跟着break;时,switch语句将继续向下执行,直到遇到break或到语句末尾时。

2.循环语句

2.1 for循环

for循环的语法形式:

for(表达式1;表达式2;表达式3)
{
    循环语句;
}
//表达式1:对循环变量进行初始化,
//表达式2:进行判断,决定循环是否继续进行
//表达式3:对循环变量进行调整

进入for循环时,先进行初始化,再对循环变量进行判断,若使表达式2为真,则进入循环,循环语句结束之后再进入表达式三进行调整,然后再次进行(判断——循环——调整)的重复,直到表达式结果为假时或遇到break时,结束循环。

不同部分的表达式需要以分号;隔开,不同部分的表达式可以有零个及以上。

2.2 while循环

while循环的语法形式:

表达式1;
while(表达式2)
{
    循环语句;
    表达式3;

}

不同于for循环,while循环的循环变量的初始化在while语句外,while语句只有表达式2判断循环的进行和表达式3对循环变量的调整。总体上与for循环差别不大。

2.3 do while循环

do while循环的语法形式:

表达式1
do
{

    循环语句;
    表达式2;
}while(表达式3);

do while循环与其他两种循环最大的差异是,do while循环会先进入循环体,执行循环语句,再进行调整和判断,而其他部分差异不大。所以其至少被执行一次

2.4 break和continue语句

一般来讲,循环语句只会在判断表达式为假时结束循环。而为了能够符合实际要求,C语言中设计了break和continue语句,可以跳出循环,而两种语句也有差别。

2.4.1 break语句

break语句可以跳出本层循环,且不再执行之后的语句。需要注意的是,根据需要我们可能会有嵌套循环,而break语句只能跳出一层循环

运行结果为输出0 1 2 3 4

2.4.2 continue语句

与break不同的是,continue语句只能跳过continue之后的语句,仍然会进入下次循环

运行结果为输出0 1 2 3 4 6 7 8 9

2.5 goto语句

在遇到多层的嵌套循环时,如果想跳出整个循环,多次执行break的效率太慢,这时候我们可以使用C语言提供的goto语句及其的跳转标号。goto语句可以实现在同一个函数内跳转到设置好的标号处。

for()
{

    for()
    {
        for()
        {
            if()
                goto next;
        }
    }


}
next:

伪代码中的next即为跳转标号,其名称可以随意定义。goto语句将会直接跳转到跳转标号的位置。

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值