C语言初阶之分支与循环

写在前面:在C语言中,分支与循环语句是控制程序流程的重要组成部分。它们允许程序根据不同的条件执行不同的代码块,或者重复执行某段代码直到满足特定的条件为止。接下来将会为大家讲解C语言里的这部分知识点。

一、什么是语句

在C语言中,“语句”指的是构成程序的基本单位之一,它告诉计算机要执行的操作。语句可以是一条简单的命令,如变量赋值;也可以是一个复杂的操作,如条件判断、循环等。每个语句通常以分号(;)结束,表示一个完整的指令。下面是C语言中的一些常见的语句类型:

(1)表达式语句

这是最简单的语句形式,它由一个表达式后跟一个分号组成。

int x = 5; // 赋值语句
printf("Hello, World!"); // 函数调用语句

(2)复合语句

 复合语句是由多条简单语句组成的,通常用花括号{}包围起来。

{
    int a = 10;
    int b = 20;
    int sum = a + b;
    printf("%d", sum);
}

(3)选择语句

选择语句用于基于条件来选择不同的执行路径。包括if,if-else,if-else-if 和switch语句。

if (x > 0) {
    printf("x is positive");
} else {
    printf("x is not positive");
}

(4)循环语句 

循环语句允许重复执行一系列语句直到某个条件不再满足。常用的循for,while, 和do-while语句

for (int i = 0; i < 10; i++) {
    printf("%d ", i);
}

(5)跳转语句 

跳转语句用于改变程序执行的顺序。常见的跳转语句有goto,break和continue语句

for (int i = 0; i < 10; i++) {
    if (i == 5) continue; // 跳过本次循环剩余部分,直接进入下一次循环
    printf("%d ", i);
}

(6)空语句

由一个单独的分号构成的一个空语句,通常用于占位或者作为循环的一部分。

二、分支语句

在编程中,分支语句是用来控制程序流程的一种方式,使得程序可以根据不同的条件选择不同的执行路径。

  • if语句

if语句是最基本的形式,它允许你在某个条件为真时执行一段代码。

if (条件) {
    // 如果条件为真,则执行这里的代码
}

 例如:

#include<stdio.h>
int main()
{
    int number = 0;
    if(number > 0) //number = 10满足括号中的条件,执行花括号内的语句
    {
        printf("这是一个正数");
    }
    return 0;
}
  • if-else语句 

if-els结构允许你在条件为真时执行一段代码,在条件为假时执行另一段代码。

if (条件) {
    // 如果条件为真,则执行这里的代码
} else {
    // 如果条件为假,则执行这里的代码
}

例如:

#include<stdio.h>
int main()
{
    int number = 0;
    if(number > 0) 
    {
        printf("这是一个正数");
    }    
    else 
    {
        printf("这是一个负数");
    }
    return 0;
}
  • if-else if -else语句 

if-else if -else结构允许你在多个条件下选择一条路径执行。当第一个条件为真时,执行相应的代码块,并跳过其余的条件检查;否则继续检查下一个条件。

if (条件1) {
    // 如果条件1为真,则执行这里的代码
} else if (条件2) {
    // 如果条件1为假且条件2为真,则执行这里的代码
} else {
    // 如果所有前面的条件都为假,则执行这里的代码
}

例如:

#include<stdio.h>
int main()
{
    int number = 0;
    if(number > 0) 
    {
        printf("这是一个正数");
    }    
    else if(number < 0) 
    {
        printf("这是一个负数");
    }
    else printf("这是0");
    return 0;
}
  • switch语句 

switch语句提供了一种基于不同情况执行不同代码块的方法。它首先计算一个表达式的值,然后查找与该值匹配的case标签,并从那里开始执行。如果没有匹配项,则执行default部分(如果有的话)。 

switch (表达式) {
    case 值1:
        // 当表达式的值等于值1时执行的代码块
        break;
    case 值2:
        // 当表达式的值等于值2时执行的代码块
        break;
    // 可以有任意数量的case标签
    default:
        // 当没有匹配的case时执行的代码块
}

例如:

#include<stdio.h>
int main()
{
    char grade = 'B';
    switch(grade)
    {
        case 'A':
        printf("优秀");
        break;
        
        case 'B':
        printf("良好");
        break;
        
        case 'C':
        printf("合格");
        break;

        default:
        printf("一般");
    }
}

如果所有表达式的值与所有case标签的值都不匹配怎么办?这种情况在C语言里不被认为是个错误,程序既不会终止也不会报错,只是所有的语句都被跳过。在这种情况下,如果你不想忽略不满足所有标签值的表达式,那么需要使用default子语句,实际上在所有的switch的末尾添加上default语句是一个良好的编程习惯。

三、循环语句

  • while循环

前面我们讲了if语句,在条件满足的情况下,if语句后的语句执行,否则不执行,但是这个语句只会执行一次。但是我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。那我们应该怎么做呢?C语言给我们引入了while语句可以用来实现循环。

while语句的执行流程:

 举个例子:我们要实现1-100的加法,其流程为:

  1. 计算紧跟while后括号中表达式的值,当表达式的值为非0时,则接着执行while语句中都内嵌语句;当表达式值为0时,则跳过while语句,执行该while结构后的其他语句。
  2. 执行循环体内嵌语句。
  3. 返回去执行步骤1,直到条件不满足,即表达式的值为0时,退出循环,while循环结束。
    #include<stdio.h>
    int main()
    {
        int cnt = 0;
        int sum = 0;
        while(cnt <= 100)
        {
            sum = sum + cnt;
            cnt++;
        }
        printf("1-100的和为%d",sum);
        return 0;
    }

while语句中的continue和break

continue语句:用来终止本次循环,也就是本次循环中的后续语句不再执行,直接转到while语句的判断部分,进行下一次循环的入口判断。

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
    {
        if(i == 5)//当i=5时跳过本次循环continue后面的代码,重新进入循环,i还是等于5,不断往复。
        continue;   
        printf("%d ", i);
        i++;//i永远无法大于10,产生死循环。
    }
 return 0;
}

 这段代码的运行情况如下:

 程序由于死循环的产生无法自动退出。

break语句:在循环中只要遇到break,就停止后期的所有的循环。

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

这段代码的运行情况如下:

循环直接终止,由于这段代码没有后续语句,所以程序自动退出。 

  • for循环

先来看看for循环的语法:

for(表达式1;表达式2;表达式3)
    {
        //循环语句
    }
  1. 表达式1初始化部分,用于初始化循环变量的。
  2. 表达式 2 条件判断部分 ,用于判断循环什么时候终止。
  3. 表达式3为调整部分,用于循环条件的调整。
for循环执行流程:

这是用for循环实现1-100的加法的例子:
#include <stdio.h>
int main()
{
    int i = 1;
    int sum = 0;
    for (i = 1; i <= 100; ++i)
    {
        sum = sum + i;
    }
    printf("1-100的和为%d", sum);
    return 0;
}
  • do while语句
do
{
    //循环语句;
}
while(表达式);

do while循环流程:

  1. 先执行一次指定的循环体语句。
  2. 执行完成后,判断while后面的表达式的值,当表达式的值为非0(真)时,程序流程返回,去重新执行循环体语句。
  3. 循环直到表达式的值等于0(假)为止,此时循环结束。

do while语句与while语句不同,while语句有可能一次都不执行内嵌语句,do-while循环至少执行一次。

#include <stdio.h>
int main()
{
    int i = 10;
    do
    {
        printf("%d\n", i);
    }while(i<10);
    return 0;
}
  •  goto语句

在C语言中,goto语句是一种无条件转移语句,它可以立即将程序控制转移到另一个标记的位置goto语句通常用于非局部跳转,即跳转到函数内的另一个位置。

从理论上讲,goto语句是没有必要的,过度使用goto语句会导致代码的可读性降低,变得难以维护。不正确的使用可能会导致程序逻辑错误或出现难以调试的问题。

但是某些场合下 goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。在这种情况下,这种情况使用 break 是达不到目的的。它只能从最内层循环退出到上一层的循环。下面是一个使用goto语句的例子。
#include <stdio.h>
int main() {
    int i, j;
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            if (i == 3 && j == 3) {
                goto end_loop;  // 当 i 和 j 都等于 3 时,跳出所有循环
            }
            printf("(%d, %d) ", i, j);
        }
    }
end_loop:
    printf("\n");
    return 0;
}

看到这里,想必你对C语言中的分支与循环语句已经有了清晰的认识,动起手来实现本文中的各个例子吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值