【C语言】循环语句while

一、简单的while循环

例如:打印1-10的数字

分析代码:

  1. 创建变量i

  1. while语句,条件为i<=10,当i>10时,跳出循环

  1. i++,每循环一次i+1

源代码

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

二、while语句中的break

break的作用为停止执行break下的语句,直接跳出循环

分析代码:

  1. 和第一段代码大部分一致

  1. 在while循环中加入if语句

  1. if的条件为当i==5时,直接跳出循环(break)

此代码的结果为:1 2 3 4(5还来不及打印就结束程序)

源代码

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

三、while语句中的continue

continue的作用为在while循环中结束continue后的所有语句,重新开始新循环

分析代码:

  1. 和第二段代码基本一致

  1. 将break改为continue

  1. 当i=5时进入if分支语句,然后结束continue后的语句(跳过打印),进入新循环

  1. 进入新循环,此时的i还是=5,则进入死循环

此代码的结果为:1 2 3 4 _(打印完1234后程序还在跑,进入死循环)

源代码

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

四、while语句中的getchar

getchar的作用为获取键盘上的字符,可以将它存在一个变量中,与scanf作用相似

分析代码:

  1. 创建变量ch

  1. while循环语句,条件如图,含义为,用关键词getchar(输入)获取键盘上的字符存入变量ch

  1. 有一个EOF(end of file)含义为文件的结尾,是一种错误

  1. 只要getchar不等于EOF就一直循环下去

  1. while循环中的语句项为putchar,作用是将键盘上的字符再打印出来(输出)

执行效果为:

想停止程序的话,用Ctrl+z即可

源代码

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

五、小任务(更好地了解getchar)

题目:写一段代码,让用户输入密码,并且让用户确认密码(必须使用getchar)

分析代码:

  1. 创建int类型的数组,名称为password,内有20个元素

  1. 打印“请输入密码”字样

  1. scanf获取键盘上的字符存入变量password

  1. 打印“请确认密码(Y/N)”

  1. getchar(此处的作用为消除\n的影响)后面会讲解

  1. 第二个getchar是获取用户输入的Y或N存入变量ch中

  1. if分支语句,条件为ch==‘Y’,符合就打印“确认成功!”

  1. 不符合则打印“确认失败!”

接下来详细说一下关于getchar有几个注意的点

  1. 在getchar和键盘之间是有一个缓冲区的

  1. 键盘上的字符先进入缓冲区,经过一段时间后,getchar是从缓冲区获得字符的

  1. 例如输入密码输入“123456”然后点击回车才会使scanf发生作用

  1. 此时的缓冲区中是“123456\n”

  1. 但是scanf只会获取数字,即123456,会留下\n在缓冲区

  1. 如果只有上面代码的第二个getchar的话,\n就会把Y的位置替代掉,会直接显示“确认失败!”

  1. 所以会提前放一个getchar去获取那个\n

对于getchar,在学习初期我有一个这样的疑问:

对此,经过学习与思考,我有了理解:

  1. getchar到底是一个什么东西?

  1. getchar你可以把它想成它只负责获取字符,就一直留在那里不发生作用,除非你把获取的字符存进一个变量,然后下面的内容会使用变量,那他就有了作用

  1. 那它获取了\n,为什么没有在执行时换行呢?

  1. 想要它显示在执行结果的话得使用putchar,putchar是让它输出,为此我也做了验证:

  1. 创建变量a

  1. 将获取\n的getchar存入边变量a中

  1. putchar(a),在执行结果会发现确实多了一个换行

注意:

还会有一种情况,我会输入“123456 abcdef”中间有空格,还多了几个字母

scanf会获取数字,第一个getchar或消除空格,但后面的abcdef\n该怎么办?

这次就要用到while循环了

  1. 创建变量tmp

  1. while循环条件为getchar获取缓冲区的字符直到遇到\n

  1. 直到遇到\n后,条件为假,跳出循环

源代码

int main()
{
    /*int a = 0;*/
    int password[20] = { 0 };
    printf("请输入密码:>");
    scanf("%s", &password);
    printf("请确认密码(Y/N):>");
 int tmp = 0;
    while ((tmp = getchar()) !='\n')
    {
        ;
    }
int ch = getchar();
    if (ch == 'Y')
    {
        printf("确认成功!");
    }
    else
        printf("确认失败!");
    return 0;
}

总结

以上就是本人对于循环语句while的学习与理解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林柏檀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值