2024秋东北师范大学ACM培训 循环结构设计

今天来学习循环结构程序设计,内容如下
1,为什么学循环?
2,三种循环结构
3,循环相关的知识

为什么学循环?

如果我们想要输入一个数并且输出这个数的话,我们只需要写如下代码

#include <stdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    printf("%d\n", a);
    return 0;
}

输入两个数的时候,我们可以这么写

#include <stdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    printf("%d\n", a);
    scanf("%d", &a);
    printf("%d\n", a);
    return 0;
}

可是如果有一百个数要输入输出的话,我们要怎么做?

重复一百遍可能不够多,但如果更多呢?有多少次我就要写多少行代码吗?

如果有一个东西能让我重复一个固定的操作确定的次数,那么不说一百次,一万次,十万次,我也可以做到,而我只需要改变重复次数就可以了,而这种结构就是循环结构

三种循环

C语言里,我们可以用for, while, do while三种方式来实现循环,下面我来分别介绍

(1) for循环

下面是一个伪代码,用来解释代码的结构

for(在循环开始的时候会执行的语句; 判断循环执行的条件,如果满足,会不断进入循环; 内容结束后执行的语句,在左边的判断之前执行)
{
    内容,每一次循环都会执行一遍
}

如果用for循环来进行一百次输入输出的话,我们可以这么做

#include <stdio.h>

int main()
{
    int a, i, n = 100;
    for(i = 0; i < n; i ++ )
    {
        scanf("%d", &a);
        printf("%d", a);
    }
    return 0;
}

而我们也可以实现之前所说的想执行多少次就执行多少次

只需要在前面加入一个对执行次数n的读入就可以了

#include <stdio.h>

int main()
{
    int a, i, n;
    
    scanf("%d", &n);    

    for(i = 0; i < n; i ++ )
    {
        scanf("%d", &a);
        printf("%d", a);
    }
    return 0;
}

(2) while循环

伪代码:

while(判断条件)
{
    内容
}

用while实现100次输入输出

#include <stdio.h>

int main ()
{
    int a, n = 100;
    while (n -- )
    {
        scanf("%d", &a);
        printf("%d", a);
    }
    return 0;
}

(3) dowhile循环

伪代码

do
{
    内容
} while (判断条件)
#include <stdio.h>

int main ()
{
    int a, n = 100;
    do
    {
        scanf("%d", &a);
        printf("%d", a);
    } while (n -- )

    return 0;
}

dowhile循环与前两者有一个明显不同

前两种循环都会先判断条件为真才会进入循环,而dowhile 会先进入循环,也就是do中的部分,然后判断条件是否为真

这意味着无论如何,dowhile写出的循环都会执行至少一次内容,这一点通常是不好用的,因此我们通常不会用dowhile

循环相关知识

(1)多组输入

在上面的样例中,我们知道要循环多少次,但如果我们不知道要循环多少次呢?

我们来做这样一道题:

偷懒的高叶同学1

琦煜老师在上课,高叶同学想偷个懒,但是琦煜老师有这样一种检查手段,他会给出t次数字n,高叶同学需要在一行内回复数字n作为听课的证明

注: t 的数量未知

输入示例:

1

2

3

4

5

6

输出示例:

1

2

3

4

5

6

我们如何实现多组输入呢?

#include <stdio.h>

int main ()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        printf("%d\n", n);
    }
    return 0;
}

(2)跳过本次循环和跳出循环

在C语言中,我们使用continue和break来实现对循环的跳过和跳出

continue

举例,如果我们要跳过循环,只需要在循环体里写一个continue就可以了,代码会执行到continue,然后结束本次循环

效果如下

while(true)
{
    执行部分
    continue;
    不执行部分
}

让我们来想一下这能做什么,当我们在某种情况下不需要执行循环中的某一部分时,我们只需要continue就可以了

让我们来做一道题

 偷懒的高叶同学2

琦煜老师在上课,高叶同学想偷个懒,但是琦煜老师有这样一种检查手段,他会给出t次数字n,高叶同学需要在一行内回复数字n作为听课的证明,但是琦煜老师不喜欢数字3,所以当输入为 3 时, 请不要答复

但是,当n为3时,不要回答!不要回答!不要回答!

注: t 的数量未知

输入示例:

1

2

3

4

5

6

输出示例:

1

2

4

5

6

#include <stdio.h>

int main ()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        // 当 n 为 3 时,我们会结束这次循环, 不会输出 3
        if (n == 3) continue;
        printf("%d\n", n);
    }
    return 0;
}

break

break比continue更霸道,会直接跳出循环,这意味着不仅不会执行循环中位于break后的部分,还不会再判断是否执行循环,直接运行循环后的部分

while(1)
{
    执行部分
    break;
    不执行部分
}

在break后,将跳至这一步而非判断是否循环

我们来想一下break有什么用

我们再来做一道题

偷懒的高叶同学2

琦煜老师在上课,高叶同学想偷个懒,但是琦煜老师有这样一种检查手段,他会给出t次数字n,高叶同学需要在一行内回复数字n作为听课的证明,输入为0的时候退出

注: t 的数量未知

输入示例:

1

2

3

4

5

6

0

输出示例:

1

2

3

4

5

6

0

#include <stdio.h>

int main ()
{
    int n;
    while (1)
    {
        scanf("%d", &n);
        // if (!n)
        if (n == 0)
        {
            break;
        }
        printf("%d\n", n);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值