循环语句
在现实生活中,又很多事情重复做的吃饭睡觉等;又例如:当你还不是一个大牛的时候,每天努力的学习知识;这就是一个循环;
在C语言中,循环有三种分别为: for , while , do .... while ;
1.while循环语法:
while (循环条件表达式)
{
循环语句;
循环变量的迭代;
}
注意:这里的循环条件表达式可以是布尔表达式,也可以是一个结果为真的表达式------C语言中0表示真非0表示假!
举个栗子(打印1---10):
#include<stdio.h>
int main()
{
int i = 1;//初始化
while(i <= 10)//判断
{
printf("%d\t", i);
i += 1;//调整
}
return 0;
}
运行结果:
2.while中的continue和break;
2.1break
在介绍break之前我们想让你来看一段代码(并思考一下您的答案):
#include<stdio.h>
int main()
{
int i = 1;//初始化
while (i <= 10)//判断
{
if (i == 5)
{
break;
}
printf("%d\t", i);
i++;//调整
}
return 0;
}
运行结果和代码解释:
这里打印的结果是否和您的预想一样?
break: 打破、结束的意思。结合上面代码的运行结果可知,当循环遇到break是就会结束掉!
因为判断条件是当i == 5的时候结束(break)所以只打印了1 2 3 4
总结:只要循环中遇到break就会结束掉 当前 循环(不管有没有执行结束)!由于这里只有一个while循环所以就直接结束掉了循环!
2.2continue
同样在介绍break之前我们想让你来看两段代码(并思考一下您的答案):
#include<stdio.h>
int main()
{
int i = 1;//初始化
while (i <= 10)//判断
{
if (i == 5)
{
continue;
}
printf("%d\t", i);
i++;//调整
}
return 0;
}
思考代码的结果然后看第二段代码:
#include<stdio.h>
int main()
{
int i = 1;//初始化
while (i <= 10)//判断
{
i++;//调整
if (i == 5)
{
continue;
}
printf("%d\t", i);
}
return 0;
}
运行结果以及代码解:
(1)
(2)
continue : 继续的意思;结合上面两个代码以及运行结果就会发现 :当循环中遇到continue就会跳过continue后面的内容!
代码1运行解释:
代码2运行解释:
总结:continue是终止本次循环,也就是是说continue后面的他都不会执行会直接跳过,进入下一次循环!
OK,下面我没问你再来看几个代码:
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
putchar(ch);
return 0;
}
运行结果:
这里注意到,上面有两个函数------>getchar和putchar我们来仔细看一看其作用:
getchar:
getchar这个函数的返回值类型是 int 其形参列表为 void 其作用是 返回输入的字符的ASCII码值。当读取字符成功时返回字符(的ASCII值),否则返回EOF,这里又出现了一个新的东西EOF究竟是啥呢?它的全称是END OF FILE,其实他就是-1;我们可以看一看它的底层实现:
putchar :
putchar这个函数返回值类型是 int 参数列表是该字符的ASCII值,其作用是标准化输出字符,当接收成功这个字符的ASCII值时输出这个字符ASCII值,否则输出EOF(-1);
ok ,举个小小的例子用一下上面的两函数:
#include<stdio.h>
int main()
{
int ch = 0;
ch = getchar();
printf("getchar的返回值打印:\n");
printf("%d\n", ch);
printf("putchar的打印字符和返回值打印:\n");
printf("\n%d", putchar(ch));
return 0;
}
运行结果:
难道这两函数的作用就是这个吗?当然买不是啦!就让我们来一起见识一下这两函数的真实作用:
代码演示(输入密码确认):(假设密码是:123456):
#include<stdio.h>
int main()
{
char arr[20] = { 0 };
printf("请输入密码:>\n");
scanf("%s", arr);
char input = 0;
printf("请再次确认密码Y/N:>\n");
if (getchar() == 'Y')
{
printf("登陆成功!\n");
}
else
{
printf("登陆失败!\n");
}
return 0;
}
ok ,代码已经写完了,您觉得是否正确呢?
运行结果以代码解释:
这里还没有,确认就自动已经输出失败了Why?这里在说getchar和putchar之前要先介绍一下缓冲区:(画图演示):
当scanf/getchar在输入这些字符时,会先放到缓冲区,当缓冲区无字符时就会等着你输入(闪光标),输入后就会读取!那么上面那个代码是不是在输入Y/N前加一个getchar就好了呢?让我们试一下:
结果确实看起来好像们有问题了,但你如果这样输入就有问题了:
中间加一个空格 就不行了,因为scanf格式话输入就是个非空格以前的东西;
那么这段代码真的没救了吗?不是的。我们只要想办法把\n前的东西处理掉就好了!我们为您学了while循环正好可以用来处理这个问题:
#include<stdio.h>
int main()
{
char arr[20] = { 0 };
printf("请输入密码:>\n");
scanf("%s", arr);
char input = 0;
while (getchar() != '\n')
{
;
}
printf("请再次确认密码Y/N:>\n");
if (getchar() == 'Y')
{
printf("登陆成功!\n");
}
else
{
printf("登陆失败!\n");
}
return 0;
}
运行结果:
这样才没有问题了!
ok !感谢观看,好兄弟下期再见!!!