C-循环语句

循环语句

循环语句分类:

  • while
  • for
  • do while

1.0 while循环

上文了解过 if 语句,if 语句是当条件满足的时候,执行语句执行一次。

有些事情是同一件事情要完成很多次,这时便需要while语句。C语言中使用while语句可以实现循环。

while 语句的语法结构:

//语法结构
while (表达式)
	循环语句;

我们使用代码来具体理解一下while 语句:

打印1~100之间的数。

#include <stido.h>

int main()
{
    int i = 0;
    while (i < 101)
    {
        printf("%d",i);
        i++;
    }
    return 0;
}
1.1.1 while 语句中的 break 和 continue

①break

看以下代码

#include <stdio.h>

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

这个代码块的结果是多少?

0 1 2 3 4

可以发现在 i==5 以后没有数值输出了,也就是循环不再继续。

也就是说,在循环中遇到 break 则停止后期所有循环,直接终止循环。

所以 while 中的break是用于永久的终止循环的。

②continue 介绍

代码

#include <stdio.h>

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

结果也是

0 1  2 3 4

但是打印出以上结果后程序并没有结束。

#include <stdio.h>

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

再看这个代码,结果是

1 2 3 4 6 7 8 9 10 11

总结一下:continue 在 while 循环中的作用是终止本次循环,也就是本次循环中的 continue 后边的代码不再执行,而是跳到 while 语句的判断部分。进行下一次的循环入口判断。

为什么第一个代码会输出 0 1 2 3 4 ?

因为在 i==5 后 continue,continue后的 i++的代码没有运行所以导致 i 一直都是 5 每次判断后又 continue 导致是一个死循环。

//代码1
#include  <stdio.h>

int main()
{
    int ch = 0;
    while ((ch = getchar()) !=EOF)
        putchar(ch);
    
	return 0;
}

//代码解释:getchar()和putchar()是输入、输出函数,每次只读取/输出一个字符,getchar()返回的是字符的 ASCII码值,读取异常时返回 -1  。
//同时理解 一个概念 键盘缓冲区 。
//代码二
#include <stdio.h>

int main()
{
    int ch =0;
    while ((ch = getchar()) != EOF )
    {
        if (ch < "0" && ch > "9")
            continue;
    	putchar(ch);
    }
    
    return 0;
}
//这个代码的作用是:只打印数字的字符,跳过其他的字符

2.0 for循环

2.1.1 for循环的语法结构
for (表达式1;表达式2;表达式3)
    循环语句;

解释:

  • 表达式1:为初始化部分,用于初始化循环变量;
  • 表达式2:条件判断部分,用于判断循环语句是否执行;
  • 表达式3:调整部分,用于循环条件的调整。

下面看代码具体了解:

#include <stdio.h>
int main()
{
    int i = 0; 
    for (i=0;i<=10;i++)
    {
        printf("%d\n",i);
    }
    
	return 0;
}

对比 while 循环和 for 循环


int i = 0;
//实现相同的功能,使用while
i=1;//初始化部分
while(i<=10)//判断部分
{
 printf("hehe\n");
 i = i+1;//调整部分
}


//实现相同的功能,使用while
for(i=1; i<=10; i++)
{
 printf("hehe\n");
}

for循环的执行过程:表达式1—>表达式2—>(循环语句)—>表达式3—>表达式2— …

2.2.2 for循环中的 break 和continue

在 for 循环中的 break 和 continue 的作用与在 while 循环是一样的。

具体看代码:

//代码1
#include <stdio.h>

int main()
{
    int i = 0;
    for (i=0;i<=10;i++)
    {
		if (i == 5)
            break;
        printf("%d\n",i);
    }
    return 0;
}

//0 1 2 3 4
//代码2
#include <stdio.h>
int main()
{
    int i = 0;
    for (i=0;i<=10;i++)
    {
        if (i==5)
            continue;
        printf("%d\n",i);
    }
    return 0;
}

//0 1 2 3 4 6 7 8 9 10

此外,尽量不要在循环体内修改循环体!!!可以使用过,但不要进行赋值或运算等操作。

2.2.3for 循环的一些变化操作
#include <stdio.h>
int main()
{
    for (;;)
        printf("I AM HAPPY")
    return 0;
}

//for 循环的表达式条件都可以省略,但是省略判断表达式则恒为真。
//代码2
#include <stdio.h>
int main()
{
    int i=0;
    int j=0;
    int num=0;
    for (i=0;i<10;i++)
    {
        for (j=0;j<10;j++)
        {
            printf("am\n");
            num++;
        }
    }
    printf("\n%d\n",num);
    return 0;
}
//输出 100 个 am
//代码2
#include <stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    int num = 0;
    for (; i < 10; i++)
    {
        for (; j < 10; j++)
        {
            printf("am\n");
            num++;
        }
    }
    printf("\n%d\n", num);
    return 0;
}

//省略初始化,打印10个,原因:i=0 第一次循环后 j=10 而后面的循环,并没有对进行初始化,所以不会循环。
//代码4
#include <stdio.h>
{
    //代码4-使用多余一个变量控制循环
 int x, y;
    for (x = 0, y = 0; x<2 && y<5; ++x, y++)
   {
        printf("hehe\n");
   }

    return 0;
}

//使用两个变量控制循环。

3.0 do while 循环

do while 语句比较简单

//结构
do 
 {
 	循环语句;
 }
while (表达式);

由于do 在前,所以do while 循环一定会执行一次。

#include <stdio.h>

int main()
{
    int i = 1;
    do
    {
    	printf("%d\n",i);
        i++;
    }
    while (i<11);
	return 0;
}

do while 循环并不经常使用。

3.1.1 do while 中的 break 与 continue

作用与for循环和while循环一样,这里不多赘述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值