玩转C语言for循环语句

前言与概述:

在C语言中,for循环语句是较为常用的循环语句,本文章主要介绍for循环的基本语法结构、continue语句和break语句在for循环中的使用、for循环的三种变体,最后通过一道面试题来巩固前面所学知识。

for循环基本语法结构

基本语法结构

for(表达式1;表达式2;表达式3)

{

        循环语句;

}

表达式1:初始值,表达式1用于初始化循环变量的值,该表达式只执行一次

表达式2:循环条件,表达式2用于定义循环条件,当循环条件成立时,执行循环语句块,当循环条件不成立,退出循环。

表达式3:调整,表达式3用于调整循环变量的值,当每次循环语句结束后,都会进入表达式3对循环变量的值进行调整。

图解for循环表达式

实践演练出真知

例题:请使用for循环输出1-10所有的整数

分析:例题要求输出1-10所有的整数,既然是整数,我们就要定义int类型的循环变量,该变量的值就是要输出的值。输出第一个值是1,那么可以初始化循环变量值为1。输出最大的值是10,那么循环条件就是循环变量的值<=10,输出1后输出2,那么循环变量的值每次都要加一。循环语句很简单,就是输出循环变量的值。

示例代码:

//输出1-10所有的整数
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

运行结果:

 

 

for循环使用建议

Part1:不建议在for循环语句块内修改循环变量的值,防止出现无限循环。

错误代码示例:

 

 

分析:由于笔者在循环语句块内修改了循环变量i的值,导致程序不停输出6,陷入死循环。这是因为:for循环初始循环变量i的值为1,循环条件满足,输出1。将变量i的值变成5,经过i++的调整,变量i的值为6,满足循环条件,输出6,又将变量i的值变成5,经过i++的调整,变量i的值又为6,再次满足循环条件,输出6。以此类推,循环条件始终是满足的,故程序陷入无限循环。

Part2:建议将for循环循环变量的取值设置为前闭后开区间,这样更符合逻辑,也显得代码更高级。

区间:

break和continue在for循环中的使用

break语句用于永久终止循环

在for循环语句中,如果使用break语句,会直接终止剩余所有的循环语句,并离开循环。

例题:输出1-10所有的整数,但输出第四个数后便不再输出

分析:题目要求输出1-10所有的整数,所以我们可以使用上个代码。但是,题目还要求输出第四个数后便不再输出,于是,当我们输出第四个数(循环变量的值为4)后,使用break语句终止循环。

示例代码:

//break语句
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i < 11; i++)
	{
		printf("%d ", i);
		if (i == 4)
		{
			break;
		}
	}
	return 0;
}

运行结果:

 

 

continue语句用于终止本次循环剩余部分

在for循环中,continue语句用于终止本次循环的剩余语句,并且返回到表达式3,对循环变量进行调整。

例题:如果将上个代码的break语句改为continue语句,输出结果是什么呢?

示例代码:

//continue语句
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i < 11; i++)
	{
		if (i == 5)
		{
			continue;
		}
		printf("%d ", i);
	}
	return 0;
}

运行结果:

 

 

分析:从控制台中,我们可以看到只有5没有输出,这正是continue语句发挥作用。当变量i的值等于5时,进入continue语句,会终止当前剩余的循环语句,即不输出5,然后返回到表达式3,调整变量i的值,变量i的值加1变成6,if条件语句不成立,输出6。

for循环变体

无循环条件的for循环

在for循环中,圆括号内的3个表达式都可以省略。如果没有设置循环条件,那么默认循环条件恒成立,程序就会陷入无限循环。

示例代码:

//无循环条件for循环
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; ; i++)
	{
		printf("haha! ");
	}
	return 0;
}

 运行结果:

 

嵌套for循环

for循环支持在for循环语句块内部设置for循环,当外部的for循环条件成立后,如果内部的for循环成立,会进入内部for循环,当内部的for循环执行完毕后,会回到外部的for循环,如果外部for循环成立,会再次进入内部的for循环。依此类推,直到外部for循环条件不成立。

例题:打印九九乘法表

示例代码:

//打印九九乘法表
#include <stdio.h>
int main()
{
	int i, j;
	int sum = 0;
	for (i = 1; i < 10; i++)
	{
		for (j = 1; j < i + 1; j++)
		{
			sum = i * j;
			printf("%d * %d = %d", i, j, sum);
			if (sum > 9)
			{
				printf("  ");
			}
			else {
				printf("   ");
			}

			if (i == j)
			{
				printf("\n");
			}
		}
	}
	return 0;
}

运行结果:

 

多循环变量表达式

for循环支持圆括号内3个表达式都可以有多个循环变量。

示例代码:

//多个循环变量
#include <stdio.h>
int main()
{
	int i, j;
	for (i = 0, j = 0; i < 3 && j < 5; i++, j++)
	{
		printf("good!\n");
	}
	return 0;
}

分析:在本代码中,定义两个循环变量,并由这两个循环变量共同控制循环条件,&&是逻辑与左右两个条件必须同时满足,循环条件才成立。||是逻辑或,左右两个条件只要满足一个条件,循环条件就成立。每次for循环都输出“good!”,当第三次for循环结束后,循环变量i的值调整为3,循环条件不成立,循环结束。

练习题:

下列代码一共循环多少次?

//面试题
#include <stdio.h>
int main()
{
	int x = 0;
	int y = 0;
	for (x = 0, y = 0; x = 0; x++, y++)
	{
		x++;
	}
	return 0;
}

答案:一共循环0次,for循环循环条件是“x = 0;”,“=”是赋值符不是相等符。将0赋予变量x,变量x的值是0,循环条件不成立。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值