跳出函数(语句)详解

跳出函数(语句)详解

前言

今年新大纲出了,我对比了一下,还是有很多变化的,总体来说难度有所上涨,但也不是很难,我们需要做的就是关注新大纲的内容!因为这些是极其有可能考的,所以接下来我会出多篇博客,详细学习一下新大纲多出来的内容。

这就是今年新的加入的跳出函数,虽然往年也考过,但是今年这个,还单独说明,可见其重要性。

跳出:continue、break、return()、abort()、exit()

continue

基本作用

continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。

注意:continue语句并没有使整个循环终止。

在各种循环结构中的例子

while

#include <stdio.h>

int main() {
    int i = 1;

    while (i <= 5) {
        if (i == 3) {
            i++;
            continue;  // 当 i 等于 3 时跳过当前迭代
        }
        printf("%d ", i);
        i++;
    }

    return 0;
}

image-20231001104448482

for

#include <stdio.h>

int main() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            continue;  // 当 i 等于 3 时跳过当前迭代
        }
        printf("%d ", i);
    }

    return 0;
}

image-20231001104858999

do-while

#include <stdio.h>

int main() {
    int i = 1;

    do {
        if (i == 3) {
            i++;
            continue;  // 当 i 等于 3 时跳过当前迭代
        }
        printf("%d ", i);
        i++;
    } while (i <= 5);

    return 0;
}

image-20231001105924376

综合利用-控制循环条件

#include <stdio.h>

int main() {
    int sum = 0;
    int number;
    
    while (1) {
        printf("请输入一个整数:");
        scanf("%d", &number);
        
        if (number < 0) {
            break;  // 当输入一个负数时,跳出循环
        }
        
        if (number % 2 == 0) {
            continue;  // 当输入一个偶数时,跳过当前迭代
        }
        
        sum += number;
    }
    
    printf("奇数的和为:%d\n", sum);

    return 0;
}

image-20231001105644782

与break的区别

1、break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

2、在多层循环中, 一个break语句只向外跳一层。continue语句的作用是跳过循环体中剩余的语句并到循环末尾而强行执行下一次循环。

3、break可以在 if-else 中使用直接跳出当前循环。

4、continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。

break

基本作用

C 语言中 break 语句有以下两种用法:

  1. break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  2. 它可用于终止 switch 语句中的一个 case。

如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

在各种循环结构中的例子

while

#include <stdio.h>

int main() {
    int i = 1;

    while (i <= 5) {
        if (i == 3) {
            break;  // 当 i 等于 3 时结束循环
        }
        printf("%d ", i);
        i++;
    }

    return 0;
}

image-20231001110150194

for

#include <stdio.h>

int main() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break;  // 当 i 等于 3 时结束循环
        }
        printf("%d ", i);
    }

    return 0;
}

image-20231001110434754

do-while

#中途睡了个午觉jb睡了一下午。。。

#include <stdio.h>

int main() {
    int i = 1;

    do {
        if (i == 4) {
            break;  // 当 i 等于 4 时结束循环
        }
        printf("%d ", i);
        i++;
    } while (i <= 5);

    return 0;
}

image-20231001172947527

return()

基本作用

return 语句在跳出循环时的作用主要有两种:立即终止当前函数的执行和跳出当前循环并返回到调用函数的代码处。 return 语句是一种有效的控制流程语句,可以根据特定条件提前终止函数的执行,并返回适当的结果。

在各种循环结构中的例子

while

#include <stdio.h>

// 编写一个函数,用于找到数组中第一个小于目标值的元素的索引
int findIndex(int arr[], int length, int target) {
    int i = 0;
    while (i < length) {
        if (arr[i] < target) {
            return i;  // 当找到第一个小于目标值的元素时立即返回索引
        }
        i++;
    }
}

int main() {
    int numbers[] = { 9, 8, 2, 10, 3 };
    int length = sizeof(numbers) / sizeof(numbers[0]);

    int index = findIndex(numbers, length, 7);
    if (index != -1) {
        printf("第一个小于目标值的元素在数组的索引位置:%d\n", index);
    }
    else {
        printf("数组中不存在小于目标值的元素。\n");
    }

    return 0;
}

image-20231001174034685

for

#include <stdio.h>

// 编写一个函数,用于查找数组中是否存在目标值
int findValue(int arr[], int length, int target) {
    for (int i = 0; i < length; i++) {
        if (arr[i] == target) {
            return i;  // 当找到目标值时立即返回索引
        }
    }

    return -1;  // 如果循环结束仍未找到目标值,则返回 -1
}

int main() {
    int numbers[] = { 5, 8, 2, 10, 3 };
    int length = sizeof(numbers) / sizeof(numbers[0]);

    int index = findValue(numbers, length, 10);
    if (index != -1) {
        printf("目标值在数组中的索引位置:%d\n", index);
    }
    else {
        printf("数组中不存在目标值。\n");
    }

    return 0;
}

image-20231001174146521

do-while

#include <stdio.h>

// 编写一个函数,用于计算给定数字的阶乘
int factorial(int num) {
    if (num < 0) {
        return -1;  // 输入不合法,返回 -1
    }

    int result = 1;
    int i = 1;
    do {
        result *= i;
        i++;
    } while (i <= num);

    return result;
}

int main() {
    int number = 5;

    int result = factorial(number);
    if (result != -1) {
        printf("%d 的阶乘为:%d\n", number, result);
    }
    else {
        printf("输入不合法。\n");
    }

    return 0;
}

image-20231001174739587

本质上就是用return来根据不同情况让函数返回不同的值

abort()

基本作用

菜鸟教程中对它的描述是这样的:C 库函数 void abort(void) 中止程序执行,直接从调用的地方跳出。

在C语言中,abort() 是一个库函数,用于终止程序的执行并生成一个异常终止信号。它通常在程序遇到无法恢复的严重错误时使用,如内存分配失败、文件读写错误等。 abort() 函数会引发一个异常,这个异常可以被操作系统或调试器捕获并进行相应处理。

在各种循环结构中的例子

while

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i = 0;
    while (i < 10) {
        if (i == 5) {
            abort();
        }
        printf("%d ", i);
        i++;
    }

    printf("循环结束\n");

    return 0;
}

image-20231001181143831

其他例子就不举了,都差不多,会弹出一个报错,然后终止整个程序,不会执行本程序最后的“循环结束”

exit()

基本作用

菜鸟教程的描述:C 库函数 void exit(int status) 立即终止调用进程。任何属于该进程的打开的文件描述符都会被关闭,该进程的子进程由进程 1 继承,初始化,且会向父进程发送一个 SIGCHLD 信号。

在各种循环结构中的例子

之前都说错了,什么循环函数,明明是循环结构。

while

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i = 0;
    while (1) {
        printf("%d ", i);
        i++;
        if (i == 5) {
            exit(0);
        }
    }

    printf("这里不会被执行\n");

    return 0;
}

image-20231001182439955

这个函数也简单,exit和abort都是直接退出整个程序,只不过abort是要报错的,return是退出这个函数回到调用的地方,break和continue只在循环层次上跳出。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。