我们已经掌握了,if语句:
if(条件)
语句;
当条件满足的情况下,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次。
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
1.while循环
那我们怎么做呢? C语言中给我们引入了: while语句,可以实现循环。
//while 语法结构
while(表达式)
循环语句;
while语句执行的流程:
比如实现:
在屏幕上打印1-10的数字。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
printf(" %d ", i);
i++;
}
return 0;
}
这就是基本的语法。
2.while语句中的break和continue
2.1.break
要中断程序,可以加入break
//break 代码实例
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;
printf("%d ", i);
i = i+1;
}
return 0;
}
当i==5,向下遇到break终止,跳出函数,不再打印也不再自加,所以只打印0,1,2,3,4
break用于永久的终止循环,如果只是跳出本次命令直接用于下次循环可以用continue
break在while循环中的作用:
- 其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
- 所以:while中的break是用于永久终止循环的。
2.2.continue
//continue 代码实例1
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
为什么程序不继续打印而是陷入一个死循环呢?
因为continue只是跳过本次循环,程序倒头之后继续向下执行
//continue 代码实例2
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
i = i+1;
if(i == 5)
continue;
printf("%d ", i);
}
return 0;
}
continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
2.3.getchar:
//代码1
#include <stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
putchar(ch);
return 0;
}
//这里的代码适当的修改是可以用来清理缓冲区的.
//代码2
#include <stdio.h>
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF)
{
if (ch < ‘0’ || ch > ‘9’)
continue;
putchar(ch);
}
return 0;
}
//这个代码的作用是:只打印数字字符,跳过其他字符的、
#include <stdio.h>
int main()
{
int ch = 0;
//ctrl+Z getchar 就读取结束
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
#include <stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码");
scanf("%s", password);
printf("请确认密码(Y/N)");
int ch = getchar();
if (ch == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
需要用getchar();来处理\n
这样的程序不能解决密码内123 adc,需要加入getchar循环来清空缓冲区
int tmp = 0;
while ((tmp = getchar())!= '\n')
{
;
}
当读到字符不是\n,执行空白语句,然后循环,直到读到\n为假,不成立