目录

一、while语句  

1:语法结构:

2.while语句的三个部分

二、while语句代码示例:

1.在屏幕上输出1~10

2.while循环流程图:

三、break循环语句中的作用

四、continue在循环语句中的作用

五、getchar()函数代码分析

1.getchar()函数

2.putchar()函数

六、登录认证

1.登录认证代码问题

2.输入缓冲区

3.登录认证代码的正确写法:


【明解C语言】之do... while循环_马桶上看算法的博客-CSDN博客C语言、循环语句、初级、编程语言https://blog.csdn.net/m0_63033419/article/details/123704397?spm=1001.2014.3001.5501【明解C语言】之for循环_马桶上看算法的博客-CSDN博客C语言、for循环、编程初级、for循环练习题https://blog.csdn.net/m0_63033419/article/details/123715284?spm=1001.2014.3001.5501

一、while语句  

1:语法结构:

while(表达式)
{
     循环语句;
}

表达式如果为非0,表达式结果为真,循环语句要被执行;如果为非0,就不执行。

2.while语句的三个部分

while语句的这三个部分(初始化部分、判断部分、调整部分)任意一个部分发生变化都会影响到循环 

二、while语句代码示例:

1.在屏幕上输出1~10

代码段1:

#include<stdio.h>

int main()
{
    int i = 1;
    while(i<=10)//i小于等于10进入循环语句
    {
        printf("%d ",i);
        i++;//自加1
    }
    return 0;
}

输出结果:

2.while循环流程图:

三、break循环语句中的作用

代码段2:

#include<stdio.h>

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

输出结果:

 在while循环中,break被用于永久性的终止循环。

四、continue在循环语句中的作用

代码段3:

#include<stdio.h>

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

输出结果:光标一直闪烁,说明代码还没有结束(死循环)。

在while语句中,continue的作用是跳过本次循环continue后面的代码,直接去判断部分,看是否进行下一次循环。

五、getchar()函数代码分析

1.getchar()函数

代码段4:

#include<stdio.h>

//EOF-end of file--文件结束标志
int main()
{
    int ch = getchar();
    printf("%c\n",ch);
    return 0;
}

输出结果:

2.putchar()函数

代码段5:

#include<stdio.h>

//EOF-end of file--文件结束标志
int main()
{
    int ch = getchar();
    putchar(ch);//输出一个字符
    return 0;
}

输出结果:

getchar()用于输入,putchar()用于输出。

getchar()读取失败的时候会返回一个EOF。

代码段6:

#include<stdio.h>

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

输出结果:输入一个字符,输出一个字符。

在键盘上输入Ctrl+Z的时候getchar读取结束。

代码分析:

 getchar()读取一个字符,放到ch里面去,如果赋完值之后得到的ch内容不等于EOF,说明getchar()读取的是正常的字符,进入while循环的内部,然后putchar()把字符输出。如果ch内容等于EOF,表达式为假,循环结束。

六、登录认证

1.登录认证代码问题

代码段7:

#include<stdio.h>

int main()
{
    char password[20]={0};
    printf("请输入密码:>");
    scanf("%s",password);//123456
    printf("请确认密码:>");
    int ch=getchar();
    if(ch=='Y')
    {
       printf("确认成功\n");
   }
   else
   {
       printf("确认失败\n");
   }
    retutn 0;
}

password为什么没有&?

password是一个数组,数组的数组名就是一个地址,所以没有&。

输出结果:

 程序还没有输入Y/N就确认失败了,说明程序有问题。

2.输入缓冲区

getchar()和scanf()输入函数不是直接从键盘上获得数据的,而是去之间的缓冲区里拿数据,如果发现缓冲区里没有数据它就会等待,等待从键盘上输入数据到缓冲区里,如果getchar()或scanf()发现缓冲区里有数据,它就会拿走。

从键盘上输入123456\n

回车会触发scanf()读内容,敲一个回车把123456放到缓冲区里,然后scanf()才会去读取信息,scanf()只会拿123456,不会拿\n,会把123456放到数组里去。

getchar()把\n拿走了,放到了ch(判断条件)里面。

ch就是\n了,\n不等于'Y',所以就走了else,也就是确认失败。

3.登录认证代码的正确写法:

要把缓冲区里的\n拿走才可以选择输入Y或N,getchar()是用来处理\n的,可以清理缓冲区。

代码段8:

#include<stdio.h>

int main()
{
    char password[20]={0};
    printf("请输入密码:>");
    scanf("%s",password);//123456
    printf("请确认密码:>");
    //清理缓冲区
    getchar();//处理'\n'
    int ch=getchar();
    if(ch=='Y')
    {
       printf("确认成功\n");
   }
   else
   {
       printf("确认失败\n");
   }
    retutn 0;
}

输出结果:

代码段9:

#include<stdio.h>

int main()
{
    char password[20]={0};
    printf("请输入密码:>");
    //123456 abcdef
    scanf("%s",password);
    printf("请确认密码:>");
    //清理缓冲区
    getchar();//处理'\n'
    int ch=getchar();
    if(ch=='Y')
    {
       printf("确认成功\n");
   }
   else
   {
       printf("确认失败\n");
   }
    retutn 0;
}

输出结果: 


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐