我们在C语言中,常见的循环语句有 while循环语句, for循环语句, do while循环语句。
1.1while循环语句
while(判断表达式) (表达式为真则循环执行)
循环语句;
举例:在屏幕上打印1-10的数字
#include <stdio.h>
int main ()
{
int i = 1;
while (i <= 10)
{
printf("%d ",i);
i++;
}
return 0;
}
1.2:while语句中的break和continue
break
#include <stdio.h>
int main ()
{
int i = 1;
while (i <= 10)
{
if(i==5)
break;
printf("%d ",i);
i++;
}
return 0;
}
在这里输出的结果就是:
1234
因此,我们可以得到while中的break是用于永久终止循环的。
continue
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
在这里输出的结果就是
1 2 3 4 6 7 8 9 10
因此我们可以得到,continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
总结:
break:while中的break是用于永久终止循环的continue:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断
2.1 for循环
我们可以看到,while循环语句中有初始化,判断部分,调整部分。
因此在for循环中。for循环则是将这三个放在一起。
for(初始化; 判断部分;调整部分)
循环语句;
因此将上述代码,用for循环表示则是:
#include <stdio.h>
int main ()
{
int i = 0;
for (i=1;i<=10;i++)
{
printf("%d",i)
}
return 0;
}
比较两个循环我们可以得知,for循环的风格更胜一筹;for循环使用的频率也最高。
2.2break和continue在for循环中
for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。
但是还是有些差异:for循环里的continue,执行完会完全跳至循环的调整部分
while循环里的continue,执行完会将整个循环的调整部分跳过去
3.1 do...while循环
do
循环语句;
while(表达式);
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}while(i<10);
return 0;
}
3.2do while循环中的break和continue
//break
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == i)
break;
printf("%d\n", i);
}while(i<10);
return 0;
}
//continue
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == i)
continue;
printf("%d\n", i);
}while(i<10);
return 0;
}
结论:do while循环中的break和continue 和while的一样。
4.1goto语句
#include <stdio.h>
int main()
{
flag:
printf("hehe\n");
printf("hehe\n");
goto flag;
return 0;
}
5.1补充一个知识点(getchar)
getchar(读取一个字符) 返回值是一个int类型
EOF(end of file)文件结束的标志(-1)
putchar()输出一个字符
读取的原则就是:getchar并不是直接从键盘上获取字符,而是在缓冲区获取字符。
看代码:
#include <stdio.h>
int main ()
{
int ch = 0 ;
while ((ch=getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
在这里我们输入A回车,返回A.....
那么getchar在我们平时的时候有什么用处呢?
接下来给大家来实现:
原因在这里:
因此在这样的情况下,我们就需要清除缓冲区的“\n”。
我们只需要在printf("请确认密码(Y或N):") 这一行的代码后面加上getchar()用来清除缓冲区的\n
那么问题又来了,如果说是在输入密码的时候我们会有空格等等其他的字符,这个时候总不能一个一个的字符清楚吧!
接下来看代码:
#include <stdio.h>
int main ()
{
char password[20] = {0};
printf("请输入密码:");
scanf("%s",password);
printf("请确认密码(Y或N):");
//清理缓冲区
//getchar()
//清理缓冲区的内容(多个字符)
int tmp = 0;
while((tmp = getchar()) != '\n')
{
;//空字符
}
int ch=getchar() ;
if(ch = 'Y')
{
printf("确认成功");
}
else
{
printf("确认失败");
}
return 0;
}