5.循环结构(while循环、for循环、do while循环、break和continue、goto语句)

1.while循环

格式:

while(条件表达式){
    
    
	代码段1;
}

步骤1:若条件表达式成立(不为0),则执行代码段1(排除break等因素直接跳出循环)
再对条件表达式进行判断,若成立,则反复步骤1
直至条件表达式不成立(为0)时,退出while循环


例1:使用while循环打印1-10

//打印1-10
int main() {
    
    
	int i = 1;
	while (i<=10)
	{
    
    
		printf("%d\n", i);
		i++;
	}
	return 0;
}



例2:输入一个正整数,逆序打印这个数
思路:
步骤一:
得到n的最低位 n%10
例如:2345%10=5
步骤二:
去掉n的最低位 n/10
例如:2345/10=234
反复步骤一、二 直至n=0为止 即可逆序获得一串整数

int main() {
    
    
	int i = 0;
	scanf("%d",&i);
	while (i)//等同于 i != 0 的效果
	{
    
    
		int a = i % 10;
		printf("%d", a);
		i /= 10;
	}
	return 0;
}



2.for循环

格式:

for(表达式1;表达式2;表达式3){
    
    
	代码段;
}

表达式1 循环变量的初始化
表达式2 循环结束的条件判断
表达式3 循环变量的调整


例1:使用for循环打印1-10

int main() {
    
    
	for (int i = 1; i <= 10; i++){
    
    
		printf(" %d", i);
	}
	return 0;
}



例2:输入一个正整数,逆序打印这个数
思路:
步骤一:
得到n的最低位 n%10
例如:2345%10=5
步骤二:
去掉n的最低位 n/10
例如:2345/10=234
反复步骤一、二 直至n=0为止 即可逆序获得一串整数

//输入一个正整数,逆序打印正整数
int main() {
    
    
	int i = 0;
	for (scanf("%d",&i); i!=0; i/=10) {
    
    
		int a = i % 10;
		printf("%d", a);
	}
	return 0;
}

例3:计算1-100之间3的倍数的数字之和

int main() {
    
    
	int sum = 0;
	for (int i = 1; i <= 100; i++){
    
    
		if (i % 3 == 0) {
    
    
			sum += i;
		}
	}
	printf("%d", sum);
	return 0;
}

输出结果:1683

3.do while循环

循环语句中do while语句使用的最少

格式:

do{
    
    
	语句1;
}while(条件表达式);

do while是先执行一次循环内部的语句1(所以do while循环中至少会执行一次循环体内的语句
然后再开始对while的条件表达式进行判断,若成立,则执行语句1;不成立,则退出循环


例1:使用do while循环打印1-10

int main() {
    
    
	int i = 1;
	do{
    
    
		printf("%d",i);
		i++;
	} while (i<=10);
}

例2:输入一个正整数,计算这个整数是几位数

int main() {
    
    
	int i = 0;
	int count = 0;
	scanf("%d", &i);
	do{
    
    
		i /= 10;
		count++;
	} while (i!=0);
	printf("%d", count);
}

4.break和continue

break 的作用直接使其终止循环(更准确的来讲是break外的第一层循环结构),跳出循环语句
continue 的作用是跳过本次循环(即 直接忽略循环体中continue以下的所有代码,直接重新进入循环中条件判断的部分)

4.1 while中的break和continue

break
例:用while循环打印1-10,若遇见5,则立刻停止打印

//break
int main() {
    
    
	int i = 1;
	while (i <= 10)
	{
    
    
		if (i == 5) {
    
    
			break;
		}
		printf("%d ", i);
		i++;
	}
	return 0;
}

continue
例:用while循环打印1-10中除了5以外的所有数

//continue
int main() {
    
    
	int i = 1;
	while (i<=10)
	{
    
    
		if (i == 5) {
    
    
			i++;
			continue;
		}
		printf("%d ", i);
		i++;
	}
	return 0;
}

4.2 for中的break和continue

break
例:用for循环打印1-10,若遇见5,则立刻停止打印

//break
int main() {
    
    
	for (int i = 1; i <= 10; i++)
	{
    
    
		if (i == 5) {
    
    
			break;
		}
		printf("%d ", i);
	}
	return 0;
}

continue
例:用for循环打印1-10中除了5以外的所有数

//continue
int main() {
    
    
	for (int i = 1; i <= 10; i++)
	{
    
    
		if (i == 5) {
    
    
			continue;
		}
		printf("%d ", i);
	}
	return 0;
}

4.2 do while中的break和continue

和while里面的用法基本一致
其实while、for、do while三种循环语句其实再break和continue的用法上基本没有什么区别
真要说哪儿不同 只能说for和while的循环结构有点不同 不影响break和continue的用法

5.goto语句

格式:

goto 跳转标识;
.....
.....
跳转标识:

goto语句和跳转标号是C语言中一种和特殊的语法
作用:goto语句可以实现再同一个函数内跳转至设置好的跳转标号处

适合使用的场景
多层嵌套的循环语句,如果想使用break终止循环,但是break只能跳出外面一层的循环,如果嵌套很深,则会很麻烦
goto其实在程序中使用的比较少,但是在多层嵌套的循环语句中,想要跳出循环,此时使用goto是个不错的选择

	int count = 0;
	for (int i = 1; i < 10; i++)
	{
    
    
		for (int j = 1; j < 10; j++)
		{
    
    
			goto outside;
		}
	}

outside:
	printf("goto跳出循环");

如果要用break跳出循环,每层循环体内都要写一个break
这里只用两层所有看着不明显,如果嵌套层数庞大,那就要写很多个break才能彻底跳出循环
而goto只需要在最外层做好标识,并在最内层的循环体内写上goto 跳转标识,即可跳出循环

猜你喜欢

转载自blog.csdn.net/qq_45657848/article/details/131890755