C语言循环知识点

本文介绍了编程中的几种基本循环结构,包括for、while和do-while循环,以及break和continue语句的用法。for循环适用于已知循环次数的情况,while循环在条件满足时持续执行,do-while循环至少执行一次。break用于退出循环,continue则跳过当前迭代的剩余部分。此外,文章还提到了嵌套循环的概念,展示了如何通过组合循环解决更复杂的问题,如打印星形图案。
摘要由CSDN通过智能技术生成

摘要:

循环(Loops):

  1. for循环:使用计数器来控制循环次数,具有初始化、条件判断和增量表达式。
  2. while循环:通过在循环开始之前和循环内部进行条件测试来控制循环次数。              (1)break语句:用于跳出循环或switch语句,终止当前代码块的执行。                    (2)continue语句:用于跳过当前循环的剩余代码,继续下一次循环迭代。
  3. do-while循环:循环体至少执行一次,然后通过条件测试来决定是否继续循环。
  4. 嵌套循环:在循环内部再嵌套一个或多个循环。

ps:如果内容不全就是因为还没学到

一、循环(Loops)

作为一个初学者,我最开始有点惊讶计算机只能对信息进行一条一条的运算(也可能是因为我没学到),对于那些很繁琐的运算,比如:

 我们不可能说写一百种相似的代码来检测这100个数是否为奇数,所以出现了循环来帮助我们快速地解决问题。

1.for循环

首先for循环的基础格式是:

for (表达式1;表达式2;表达式3)
{

    语句

}

表达式1 用于循环变量的初始化

表达式2 用于循环结束条件的判断

表达式3 用于循环变量的调整

重要的是:

                for循环的执行流程是:

1.首先执行 表达式1 初始化循环变量(比如令循环变量i=0);

2.然后执行 表达式2 判断是否进行执行循环语句。若循环变量i不符合表达式2的条件,则循环结束;若符合条件,则执行循环语句;

3.最后执行 表达式3 调整循环变量,完成后重复 表达式2 的操作。

于是对于上面的题目,我们可以写出:

#include <stdio.h>
int main()
{
	int i;
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
			printf("%d ", i);

	}
	return 0;
}

简练一点的操作流程就是:
表达式1→表达式2→语句→表达式3→表达式2→语句→······

个人认为for循环是相对难理解的

我个人的记忆(理解)方法是:

“for”有“对于”的意思,于是参照上面代码可以理解为:

        对于“i=1”这件事,i此时满足了“小于100”的条件,然后执行语句的内容,最后由“i++”对i进行调整

2.while循环

while函数和for函数是非常相似的,这点我们最后再讨论。相对而言,while函数是比较好理解的

首先while函数的基础格式是:

while (表达式) 
{

    语句

}

while循环的执行流程为:

先执行 表达式 判断是否进行执行循环语句,若满足表达式的要求,则执行语句

先举个小例子:

我们要在屏幕上打印1-66的值

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

我们可以很轻易地得到结果:

我个人的理解方法是:

“while”的意思是“当”,就是说

        当 i<66 时,表达语句

但是我们要注意,我们上面所说的“for循环”是可以由它自己来结束循环的(表达式2),但是在while函数中,有时如果我们不加以限制,计算机会不断地循环输出结果,例如:

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

	while (i == 1)
		printf("666666666"); 
	//while后边的条件满⾜,死循环的打印666666666
	return 0;
}

在这里,i 的值是恒等于1的,所以while循环会不断循环输出

所以我们可能需要一些额外的工具来帮助我们准确的运用while循环

ps:注意并不是只有while函数可以使用break和continue

ps:注意并不是只有while函数可以使用break和continue

ps:注意并不是只有while函数可以使用break和continue

(1)break语句

我们很容易发现,有时候在循环语句中,我们需要提前结束循环

当break语句被执行时,程序会立即跳出当前循环,并继续执行循环之后的代码。

举个例子:

        我们使用for循环打印从1到10的数字:

#include <stdio.h>
int main() 
{
    int i;
    for (i = 1; i <= 10; i++) {
        if (i == 5) {
            break;  // 当i等于5时跳出循环
        }
        printf("%d ", i);
    }
        printf("循环结束 ");
            return 0;
}

如果没有break的话,输出结果将会是{1 2 3 4 5 6 7 8 9 10},但由于break的出现,导致党“i=5”时循环提前结束,所以运行结果为{1 2 3 4 循环结束}

(2)continue语句

 break语句是直接停止整个循环,而continue语句则是更加“温和”一些当。continue语句被执行时,程序会立即跳过当前循环迭代中continue语句之后的代码,进入下一次循环的迭代。

接着举例子:

        输入一个整数n,编写程序可以达到循环打印从1到n之间的奇数。

#include <stdio.h>
int main() 
{
    int n;
    printf("请输入一个整数n:");
    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {
        if (i % 2 == 0) {
            continue;  // 跳过偶数
        }
        printf("%d ", i);
    }
        return 0;
}

输入“i=50”后

 原本输出的结果应该是从1-50的所有整数,但是由于continue的存在,所有偶数都被“continue”掉了,没有输出,所以输出结果只有1-49之间所有的奇数。

3.do-while循环

do-while循环是这三个循环中最不用的,我的理解是do-while循环就像是倒装句

for循环和while循环是先判断后运行的,而do-while循环是先运行一次,再进行判断是否继续循环的

首先do-while循环的基础格式是

do 
{

    语句

} while (表达式);

所以我们可以很清楚的看出来,从上到下,我们先运行了语句,然后才是while的表达式

do-while循环的执行流程是:

先执行一次循环体中的语句,然后再检查 表达式 的条件是否满足,如果条件满足,则继续执行下一次循环迭代,否则结束循环。

继续举个例子:

        使用do-while循环打印从1到5的数字

#include<stdio.h>
int main() 
{
    int i = 1;
    do 
    {
        printf("%d ", i);
        i++;

    } while (i <= 5);
    return 0;
}

我们可以看到:do-while循环也是可以做到for循环一样的事情的;并且do-while循环适用于需要至少执行一次循环体的情况,因为它先执行循环体再判断条件。

注意while后面有个分号。

4.嵌套循环

嵌套循环就是把上述三种循环叠加在一起用,难度较大,有时这三种循环嵌套在一起才能更好的竭蹶问题。

举个例子:

        打印一个带有星号的三角形图案:

#include<stdio.h>
int main()
{
    int rows = 5;
    for (int i = 1; i <= rows; i++) 
    {
        for (int j = 1; j <= i; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

两个for循环叠加在一起,外层循环控制行数,内层循环控制每行输出的星号数量。外层循环从1到5遍历每一行,内层循环从1到当前行数遍历每一列。每次迭代,内层循环输出一个星号,并在星号之间添加一个空格。每行输出完成后,外层循环通过换行符进行换行,以绘制出具有逐渐增加星号数量的三角形图案。

所以输出结果就是:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值