C语言的循环语句
1.while语句
2.for语句
3.do while语句
1.while循环
我们已经掌握了,if语句:
if(条件)
语句;
当条件满足的情况喜爱,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次。
由于我们发现生活中的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
c语言中给我们引入了:while语句,可以实现循环。
//while语句结构
while(表达式)
循环语句;
用while打印1-10
#include<stdio.h>
int main()
{
int i = 1;
while(i <= 10) //循环
{
printf("%d ", i); //打印 循环语句
i++;
}
return 0;
}
1.1while语句中的break和continue
break语句在循环语句中,跳出整个循环或者说终止整个循环‘永久的终止循环,’
#include<stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if(5 == i)
break;
printf("%d ", i);
i++;
}
return 0;
}
continue语句在循环语句中,可以跳过本次循环。
#include<stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if(5 == i)
continue; //跳过本次循环,由于跳过i++不在执行进入死循环。
printf("%d ", i);
i++;
}
return 0;
}
上面代码进入死循环如果要利用while打印1-4, 6-10修改代码。
continue跳过本次循环后面的代码,直接去判断部分,进行下一下次循环的判断。
#include<stdio.h>
int main()
{
int i = 0;
while(i < 10)
{
i++;
if(5 == i)
continue; //跳过本次循环。
printf("%d ", i);
}
return 0;
}
1 .2getchar()函数
在下面需要用到getchar()函数所以在此介绍
1.2.1什么是getchar()函数?
getchar()函数读取单个字符的函数
注意:此时是读取单个字符
如果想要读取多个字符用到gets()函数
getchar()函数返回int类型,其实返回的是ASCCII码值(整数 int),当getchar()读取结束或者失败时,会返回EOF,EOF意思是end of file本质是(-1)。
#include<stdio.h>
int main()
{
int ch = getchar();
printf("%c", ch);
putchar(ch);
return 0;
}
getchar()读取的字符如何打印,printf("%c",a) 与putchar(a)输出的结果完全相同。
1.2.2getchar()函数的使用场景
题目描述:输入一个字符串,自己对比判断是否为正确的密码,如果正确输入Y否则输入N,输入Y时输出“密码输入正确”N时输出“密码输入错误”。
#include<stdio.h>
int main()
{
char password[] = {0};
printf("请输入密码:");
scanf("%s", password);
printf("请对比密码(Y/N):");
int ch = getchar();
if(ch == 'Y')
{
printf("密码输入正确\n");
}else
{
printf("密码输入错误\n");
}
return 0;
}

此时我们还没有输入Y或者N代码自动输出密码输入错误跳出。

是因为scanf()在键盘输入密码,我们输入abcdef时,为了让的abcdef进入我们还敲了一个\n。所以此时输入缓冲区里面有aabcdef\n,scanf()函数只是读取的abcdef后面的\n并没有读取,所以此时输入缓冲区还有\n。int ch = getchar();看到输入缓冲区有\n直接取走了\n,不需要从键盘上输入。因此代码直接终止没有输入Y或者N的过程。
改进
#include<stdio.h>
int main()
{
char password[] = {0};
printf("请输入密码:");
scanf("%s", password);
printf("请对比密码(Y/N):");
while(getchar() != '\n') /*这里把输入缓冲区的字符全部取出,就不会影响int ch = getchar();正常运行*/
{
;
}
int ch = getchar();
if(ch == 'Y')
{
printf("密码输入正确\n");
}else
{
printf("密码输入错误\n");
}
return 0;
}
题目描述:只打印数字字符跳过其他字符;
#include<stdio.h>
int main()
{
char ch = '\0';
while((ch = getchar()) != EOF)
{
if(ch < '0' || ch > '9')
continue;
putchar(ch);
}
return 0;
}
//这个代码的作用:只打印数字字符,跳过其他字符。
2.for循环
我们已经知道了while循环,但是我们为什么还要一个for循环呢?
首先来看看for循环的语法;
for语句结构
for(表达式1;表达式2;表达式3)
循环语句;
表达式1:为初始化部分,用于初始化循环的变量。
表达式2:为条件判断部分,用于判断循环时候终止。
表达式3:为调整部分,用于循环条件的调整。
用for语句打印1-10
#include<stdio.h>
int main()
{
int i = 0;
for(i = 1;i<=10;i++)
{
printf("%d ",i);
}
return 0;
}
for默认只有一条循环语句,如果有多条循环语句需要使用代码块{ }。
2.1for循环break和continue
break跳出整个for循环
#include<stdio.h>
int main()
{
int i = 0;
for(i = 1;i<=10;i++)
{
if(5 == i)
break;
printf("%d ",i);
}
return 0;
}

continue跳出本次循环执行下次循环
#include<stdio.h>
int main()
{
int i = 0;
for(i = 1;i<=10;i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0;
}
2.2,for语句的循环控制变量
建议:
1.不可在for循环体内修改循环变量,防止for循环失去控制。
2.建议for语句的循环控制变量的取值采取“前闭后开区间”写法。
int i = 0;
//前闭后开的写法
for(i = 0; i < 10; i++)
{}
//两边都是闭区间
for(i = 0; i <= 9; i++)
{}
2.3for循环的变种
for循环中的初始化部分,判断部分,调整部分是都可以省略的,但是不建议初学时省略,容易导致问题。
for循环判断部分省略意味着恒成立。

可以使用多变量控制for语句
#include<stdio.h>
int main()
{
int x = 0;
int y = 0;
for(x = 0, y = 10; y >= x; y--, x++)
{
printf("%d 呵呵\n", x);
}
}
3.do...while循环
3.1do...while()语句结构
do
循环语句;
while(表达式);
用do...while()语句打印1-10
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ",i);
i++;
}
while(i <= 10);
return 0;
}
3.2break和cantinue在do...while()
break跳出整个循环; cantinue跳出本次循环。
在上面说了好多次了这里就不详细说了。
3.3do...while()语句的特点
循环至少至少执行一次,使用的场景有限,所以不是经常使用。三种循环中使用最多的是for语句。

900

被折叠的 条评论
为什么被折叠?



