C语言分支循环语句的简单介绍

C语言中的分支语句有两种:if语句和switch语句

if语句

形式为

if(表达式)
{
语句;
...
}

表达式若为真,则执行语句。
若有多条语句,则要用大括号将它们括起来,否则第一条后面的语句都将不受if的影响,即不管表达式真假都会运行。

if…else

if常跟else一起使用,else后面的语句只有在if表达式为假时才运行

if语句的嵌套

在if…else语句中,else后面可与if连用,构成多个判断语句,这样就能进行多重判断,大致形式为if…else if…else if…不断地套娃,最终以else收尾。

悬空else问题

if(表达式1)
	if(表达式2)
	else
	语句;

在这个结构中,第二个if和else是连在一起的,构成if…else结构,也就是说else在匹配if时遵循就近原则。当然,如果希望else和第一个if匹配的话,可以改为:

if(表达式1)
	{
	if(表达式2)
	}
	else

switch语句

形式为

switch(表达式)
{
	case value1:语句
	case value2:语句
	default:语句
}

下面通过例子进行说明

int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
	 case 0:
	 printf("整除,余数为0\n"); 
	 case 1:
	 printf("余数是1\n"); 
	 case 2:
	 printf("余数是2\n");

表达式为n%3,这个是整型表达式,简单来说就是进行运算

循环语句

C语言中的循环语句分为三种:while循环,for循环和do while循环。

while循环

形式为

while(表达式)
{
语句;
语句;
...
}

运行流程

首先会对表达式进行判断,只要表达式为真(值为非零),就可进行循环,再次对表达式进行判断,直到表达式的值为0退出循环。

for循环

形式:

for(表达式1,表达式2,表达式3)
如for(i=0;i<=10;i++)
{
语句1;
语句2;

}

for循环中,执行完语句后会进行变量的调整(根据表达式3调整变量),调整完后再判断表达式2的真假。若为真,则再次执行语句,再次调整,直至表达式2为假时离开循环,注意是先调整,再判断真假。如下例:

#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
 }

例子中该代码会打印出数组中所有元素。其中当i = 9时,会打印10,然后i++变为10,再进行表达式2的判断,发现为假,离开循环。(先调整再判断,这个顺序不要弄错)

for循环的嵌套

有时候我们发现只写一个for循环无法达到目的,这时候可能需要再用一次循环。最常见的就是通过嵌套for循环对二维数组进行操作,比如想要对二维数组进行打印:
在这里插入图片描述
在这里插入图片描述
效果如图:
在这里插入图片描述

for循环与条件语句的综合运用

for循环结束后有时候可能会产生多种结果,而这些结果都会出现在for循环结束处,为了区分不同的情况,我们就需要加入条件语句实现筛选的效果,如图:
在这里插入图片描述
这是冒泡排序中的排序函数,可将数组中无序的整型元素按从小到大排列。我们对其进行了优化,外层循环是进行第k次冒泡,每次冒泡后会将最大的数交换到数组末位,在进入外层循环后,初始化 flag =1,表示我们假设数组元素已经排好序(由小到大)。内层循环进行元素大小排序,如若进行元素的交换,则将flag赋值为0,表示假设不成立。于是在内层循环结束后,便会产生两种结果,flag为0或1,而我们知道,flag为1的时候就代表排序完成,没有必要继续排列,此时我们就可以跳出循环了,这样做减少了循环的次数,达到优化的效果。

值得一提的是,这里的flag可以初始化为0,后面flag=0改为flag=1以及条件判断语句改为if(flag==0)就行了,有时候也会写成if(flag),表示flag不为0的时候就执行下面的语句,当然这时候就不能将flag初始化为0了。

do…while 循环

这个循环相对比较少用。
会先执行do后面的语句,然后判断while里面的条件是否成立,若成立,则会再次执行do后面的语句,由此实现循环。

应用

在某个小游戏中,设置开始页面时可使用

在这里插入图片描述
注意这里将变量input的值作为while是否继续循环的条件,input为0的话就会退出循环,即退出游戏。若input不为0,且不为1,则会显示输入错误,重新输入,然后再次循环,输入input。这样做的好处在于可以将输入为0和输入为其他无关数字这两种情况区分开。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值