C语言(三) 循环语句结构

今天我们来看一下循环语句结构;

while语句
1)语法格式
while (条件)
{
	语句1;
        语句2;
        …
        语句n;
}
例1:在屏幕打印1-10;
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}
这个代码已经帮我们了解了while语句的基本用法,那我们再了解一下while中的break和continue
while语句中的break和continue
>>break
//break 代码实例
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}
结果为:  1  2  3  4 
总结:
    break在while中的作用:
             其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
         所以:while中的break是用于永久终止循环的。

>>continue
实例1
#include<stdio.h>
#include<stdlib.h>
//continue 代码实例1

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i = i + 1;
	}
	system("pause");
	return 0;
}
结果为: 1   2   3   4

实例2
#include<stdio.h>
#include<stdlib.h>
//continue 代码实例2
int main()
{
	int i = 1;
	while (i <= 10)
	{
		i = i + 1;
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	system("pause");
	return 0;
}
结果为: 2  3  4  6  7  8  9  10 

总结:
    continue在while中的作用:
              continue是终止本次循环的,也就是本次循环中的continue后边的代码不会执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
for循环
我们已经知道了while循环,但是我们为什么还要学习for循环呢?
1)for循环的语法
for (表达式1;表达式2;表达式3)
     循环语句;
表达式1为初始化部分,用于初始化循环变量。
表达式2为条件判断部分,用于判断循环什么时候终止。
表达式3为调整部分,用于循环条件的调整。

例2:在屏幕上打印1-10的数字。
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int i = 0;
	//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	system("pause");
	return 0;
}
现在我们来对比一下while循环和for循环:
int i = 0;
//实现相同的功能,使用while
i = 1;//初始化部分
while (i <= 10)//判断部分
{
	printf("hehe\n");
	i = i + 1;//调整部分
}
//实现相同的功能,使用while
for (i = 1; i <= 10; i++)
{
	printf("hehe\n");
}
可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分可能偏离较远,这样查找修改就不够集中和方便。所以for循环更胜一筹。for循环使用频率也较高。
break和continue在for循环中
我们发现在for驯化那种也可是出现break和continue,它们的意义和在while循环的意义是一样的。
但是还是有些差异:
#include<stdio.h>
#include<stdlib.h>

//代码1
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			break;
		printf("%d ", i);
	}
	system("pause");
	return 0;
}
结果为:1  2  3  4

//代码2
#include <stdio.h>
#include <stdlib.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	system("pause");
	return 0;
}
结果为: 1  2  3  4  6  7  8  9  10
for语句的循环控制变量
一些建议:
      1、不可再for循环体内修改循环变量,防止for循环失去控制。
      2、建议for于娟中的循环控制变量的取值采用“半开半闭区间”写法。
int i = 0;
//半开半闭的写法
for (i = 0; i<10; i++)
{
}
//两边都是闭区间
for (i = 0; i <= 9; i++)
{
}
for循环的一下变种
#include <stdio.h>
int main()
{
	//变种1
	for (;;)
	{
		printf("hehe\n");
	}
	//变种2
	int x, y;
	for (x = 0, y = 0; x + y < 10; ++x, y++)
	{
		printf("hehe\n");
	}
	return 0;
}
练习题:
1. 编写代码,演示多个字符从两端移动,向中间汇聚。

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

int main()
{
	char arr1[] = "welcome to bit...";
	char arr2[] = "#################";
	int left = 0;
	int right = strlen(arr1) - 1;
	int target = 0;
	int src = 0;
	printf("%s\n", arr2);
	//while循环实现
	while (left <= right)
	{
		Sleep(1000);
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
		printf("%s\n", arr2);
	}
	//for循环实现
	for (left = 0, right = strlen(src) - 1;
		left <= right;
		left++, right--)
	{
		Sleep(1000);
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", target);
	}
	system("pause");
	return 0;
}
结果如下:

do...while循环
1)语法结构
do
   循环语句;
while (表达式)
2)特点
循环至少执行一次,使用长英有限,所以不是经常使用。
#include <stdio.h>
int main()
{
	int i = 10;
	do
	{
		printf("%d\n", i);
	} while (i<10);
	return 0;
}:
循环语句的效率
建议1:
      在多重循环中,如果有可能,应当将最长的循环放在最内层,将最短的循环放在最外层
//代码1
for (row = 0; row<100; row++)
{
	for (col = 0; col<5; col++)
	{
		sum = sum + a[row][col];
	}
}
//代码2
for (col = 0; col<5; col++)
{
	for (row = 0; row<100; row++)
	{
		sum = sum + a[row][col];
	}
}
建议2:
      如果循环体内存在逻辑判断,并且循环次数很大,应将逻辑判断移到循环体外。
//代码1
for (i = 0; i<N; i++)
{
	if (condition)
		DoSomething();
	else
		DoOtherthing();
}
//代码2
if (condition)
{
	for (i = 0; i<N; i++)
		DoSomething();
}
else
{
	for (i = 0; i<N; i++)
		DoOtherthing();
}
程序1比程序2多执行N-1次逻辑判断。如果N非常大,最好采用2的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用1的写法比较好,因为程序较为简洁。




















  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值