循环语句学习总结

循环语句

while

for

do while

1. while 循环

1. while 的语法结构

while(表达式)

{

        循环语句;

}

当表达式为真时,进入循环执行循环语句,直到表达式为假跳出循环。

例如:

#include<stdio.h>
//在屏幕上打印1-10的数字
int main()
{
    int i = 1;
    while(i <= 10)
    {
        printf("%d  ",i);
        i+=1;
    }
    return 0;
}

运行结果:

2. while 语句中的 break 和 continue

1.break 在 while 循环中的作用:在循环中只要遇到 break ,就停止后期的所有的循环,直接终止其所在的循环。

举个栗子:

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

运行结果:

当 i 从1自增到5进入 if 语句执行 break ,而 break 会直接跳出循环,永久循环终止。

2.continue 在 while 循环中的作用:continue 是用于终止本次循环的,也就是本次循环中 continue 后面的代码不会再执行,直接跳转到 while 语句的判断部分。进行下一次循环的入口的判断。

举个栗子:

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

运行结果:

i 从1 自增到5进入 if 语句执行 continue ,而 continue 会跳过其之后的所有代码,i 不会再被打印也不会再自增,一直是 i 等于5 的死循环。

3. while 循环中 getchar((~scanf())) 和 putchar 的使用

1. getchar 从键盘中获取一个字符,putchar 输出该字符。搭配 while 可多次输入输出字符。

观察如下代码:

#include<stdio.h>
int main()
{
    int ch = 0;
    while((ch = getchar()) != EOF)//while(~scanf("%d", &ch))
        putchar(ch);
    return 0;
}

运行结果:

想要结束程序得到 EOF 只需按 Ctrl + Z

分析:

1.EOF  ---  end of file  --- 文件结束标志,getchar 读取失败的时候会返回 EOF。 

2.返回的字符本身也是 ASCII 码值,是整数。

3. getchar 函数不仅仅是返回正常字符,还会返回 EOF 是-1,所以放在整型变量中

4. 使用(~scanf())可以达到与 getcher 一样的效果,其原理一样

5. EOF 对应 -1 补码按位取反得到 0。在判断是否进入循环的表达式中,0为假,非0为真,由于得0,不在进入循环,可以达到停止循环的效果。

练习1:

#include<stdio.h>
//输入大写字母转换为小写字母
int main()
{
    int ch = 0;
    while((ch = getchar()) != EOF)
    {
         putchar(ch+32);
    }
    return 0;
}

运行结果:

练习2:

#include<stdio.h>
//在输入的字符中只输出0~9的数字
int main()
{
    int ch = 0;
    while((ch = getchar()) != EOF)
    {
        if(ch < '0' || ch > '9')
          continue;
        putchar(ch);
    }
    return 0;
}

运行结果:

2.for循环

1.for 循环的语法结构

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

{

        循环语句;

}

表达式1为初始化部分,用于初始化循环变量。表达式2为条件判断部分,用于判断循环是否终止。

表达式3为调整部分,用于循环条件的调整。

举个栗子,for 循环的使用:

#include<stdio.h>
int main()
{
    int i = 0;
    //for(i = 1/*初始化*/;i <= 10/*判断部分*/;i++/*调整部分*/)
    for(i = 1; i<= 10; i++)
    {
        printf("%d  ",i);
    }
    return 0;
}

运行结果:

for 循环与 while 循环的对比:while 循环的判断与调整部分可能会距离太远,导致整体修改时过于繁琐。而for循环初始化,判断,调整都在一起,使用起来更方便,所以 for 循环在使用中使用频率是最高的。

实现相同的功能(打印十个 hehe)

//使用 for 循环
for(i = 1; i <= 10; i++)
{
    printf("hehe\n");
}
//使用 while 循环
int i = 0;
i = 1;//初始化
 while(i <= 10)//判断
{
    printf("hehe\n");
    i += 1;//调整
}

2. 在 for 循环中的 break 和 continue

1.break 在 for 循环中和在while 循环中的作用一样:在循环中只要遇到 break ,就停止后期的所有的循环,直接终止其所在的循环。

举个栗子:

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

运行结果:

当 i 从1自增到5进入 if 语句执行 break ,而 break 会直接跳出循环,永久循环终止。

2.continue 在for 循环中与 while 循环中的作用一样:continue 是用于终止本次循环的,也就是本次循环中 continue 后面的代码不会再执行,直接跳转到 while 语句的判断部分。进行下一次循环的入口的判断。

举个栗子:

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

运行结果:

i 从1 自增到5进入 if 语句执行 continue ,而 continue 会跳过其之后的所有代码,5 不会再被打印。

3. for 语句的循环控制变量

1.不可在 for 循环体内修改循环变量,防止 for 循环失去控制。

举个栗子:

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

运行结果:死循环的打印5

由于 if 语句中的 i 为赋值,使得每次 i 进入循环以后都被赋值为 5,恒为真,并且 i++与赋值为 5 陷入了死循环,所以一直死循环的打印5。

2. for 循环的变种

变种1:省略部分条件

#include<stdio.h>
//初始化,判断,调整三部分都省略了
int main()
{
    for( ; ; )
    {
        printf("Hello world!\n");
    }
    return 0;
}

运行结果:死循环的打印 Hello world!

判断部分只要省略就意味着,恒为真。

练习:

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

运行结果:只打印了10个 Hello world

由于 j 的初始化部分省略了,循环十次以后直接自增为10,不会再被重置,内部嵌套的 for 循环不会再进入,只可以打印十个 Hello world。

2.变种2:多个变量同时控制 for 循环

#include<stdio.h>
int main()
{
    int x = 0, y = 0;
    for(x = 0, y = 0; x<2 && y<5; ++x, y++)
    {
        printf("Hello world!\n");
    }
    return 0;
}

运行结果:

3.do...while()循环

1.do...while语句的语法结构

do

        循环语句;

while(表达式);

do...while语句的特点:循环至少执行一次,使用场景有限。

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

运行结果:

2.do...while 循环中的 break 和 continue

1.do...while 循环中的break

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

运行结果:

2.do...while循环中的continue

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

运行结果:

学习到这里就结束了,你真棒!

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值