五.分支和循环语句的描述

【while循环】

1. 区分if和while的异同

(1)相同点:两者都是控制流语句用于控制程序的执行顺序

(2)不同点if 语句用于条件判断满足条件时执行一次特定的代码块
while 用于循环,只要满足条件就会重复执行代码块,直到条件不成立为止
(3)最大的不同在于 if 只执行一次,而 while 可以执行多次,取决于条件

2. 逆序打印一个正整数(进阶: 用函数递归实现)

(1)循环实现

void printReverse(int num) {
    while(num > 0) {
        printf("%d", num % 10);
        num /= 10;
    }
}

(2)递归实现

void printReverseRecursive(int num) {
    if(num > 0) {
        printf("%d", num % 10);
        printReverseRecursive(num / 10);
    }
}

【for循环】

3. 理解for循环的执行流程【重要】, 可以画图展示

(1)for循环通常包含三个部分:初始化、循环条件、更新。执行流程如下:

1. 初始化:只在循环开始前执行一次
2. 检查循环条件:若为真,则执行循环体;若为假,则跳出循环
3. 执行循环体
4. 更新:在每次循环体执行后执行  5
5. 回到第2步
4. while循环和for循环对比?如何选择使用哪个?

(1)对比:for 循环通常用于已知循环次数的情况,而 while 循环适用于不知道循环次数,只知道循环条件的情况

(2)选择:一般来说,当已知迭代次数或需要遍历时,可以优先选择 for 循环。但是如果条件比较复杂可读性更好的是 while 循环。总的来说,优先考虑代码的可读性和简洁性

5. do-while和while的区别?如何选用?

(1)最大的区别do-while 循环会至少执行一次,而 while 循环则可能一次都不执行

(2)如果需要保证循环体至少执行一次,就选择 do-while 循环,否则选择 while 循环

6. break和continue如何理解?作用范围?

(1)break:立即退出循环,不再执行剩余循环
(2)continue:跳过本次循环剩余部分,进入下一次循环
(3)作用范围:作用范围是在循环语句内部

7. 实战,素数判断代码实现
#include <stdio.h>

// 逆序打印一个正整数(使用递归)
void reversePrint(int n) {
    if (n == 0) // 递归结束条件
        return;
    printf("%d", n % 10); // 打印最后一位数字
    reversePrint(n / 10); // 递归调用,打印剩余部分
}

// 判断素数
int isPrime(int n) {
    if (n <= 1) // 小于等于1的数不是素数
        return 0;
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) // 如果能被整除,不是素数
            return 0;
    }
    return 1; // 是素数
}
8. goto语句的缺陷

(1)缺陷:goto 语句会增加代码的复杂性降低可读性,使得程序难以理解和维护
(2)替代方案:使用循环和条件语句等结构化控制流语句来代替 goto

9. 实战:用goto语句实现一个关机小程序
#include <stdio.h>
#include <stdlib.h>

int main() {
    system("shutdown -s -t 60"); // 设置60秒后关机

    start: // 标签
    printf("电脑将在60秒后关机,输入'取消'取消关机:");
    char input[10];
    scanf("%s", input);

    if (strcmp(input, "取消") == 0) {
        system("shutdown -a"); // 取消关机
    } else {
        goto start; // 跳转到标签start处
    }

    return 0;
}

请注意,上述代码中的 system 函数调用了操作系统的命令行命令,这在某些环境下可能不被允许,因为它涉及到系统权限和安全性问题。在实际应用中,应谨慎使用此类功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值