循环语句 while(进阶)

C语言中,循环分为while 循环,do while 循环,for 循环

while循环

可以理解为死循环,while后循环的可以不止一个语句,可能是一个代码块

循环语句 while(进阶)_第1张图片

想打印1-10的话:

循环语句 while(进阶)_第2张图片

break 在循环中充当终止该循环的作用

循环语句 while(进阶)_第3张图片

当 i 到5是满足 if 循环条件,break ,代码直接跳到 return 0,结束代码

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

循环语句 while(进阶)_第4张图片

当 i 等于 5 时,continue,跳过printf和i++,直接判断 i<=10,再次进入if判断, 成立,继续continue,并最终陷入死循环(光标一直闪烁说明代码依然在执行)

//EOF -- end of file 文件结束标志

//getchar()输入一个字符,putchar()输出一个代码

循环语句 while(进阶)_第5张图片

ctrl+z 默认为读取结束

应用场景:getchar()和scanf()都可以接收键盘的字符,但scanf()只能读取除\n,空格之类的的字符,而getchar()所有输入的都会接收

#include 
int main()
{ 
char password[20] = {0};
printf("请输入密码:"); 
scanf_s("%19s",password,sizeof(password)-1);
printf("是否确认密码(Y/N):"); 
int tmp = 0;
while((tmp = getchar()) != '\n' && tmp != EOF)
{ 
   ; 
}
int ch = getchar();
if (ch == 'Y');
{ 
   printf("确认成功");
}
else 
{ 
   printf("确认失败"); 
}
return 0; 
}

添加一个getchar()的while循环将缓冲区的字符全部提取走,当输入123456(空格)qwerr\n时,scanf()只会提取123456,后面的不提取,依然保留在缓冲区,不加while循环,则getchar()直接将缓冲区的(空格)qwerr\n全部接受,导致直接确认失败。而加入while循环后,让另一个getchar()一次一次将缓冲区的字符取走,达到清空缓冲区的作用。

循环语句 while(进阶)_第6张图片

你可能感兴趣的:(C语言学习,c语言,学习)