c语言循环语句

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语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值