C语言——分支循环语句

前言

本文将介绍C语言中的分支和循环语句,其中分支语句构成C语言中的选择结构,循环语句构成C语言中的循环结构。

1 分支语句

分支语句包括 if 语句和 switch 语句。

1.1 if语句

if的语法形式如下:

if(此处输入表达式)
	此处输入语句;

如果表达式结果为真,则执行语句,反之则不执行。
:输入一个整数,判断其能否被3整除。

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 3 == 0)
		printf("%d能被3整除",n);
	return 0;
}

这里注意到,如果不能被3整除,没有对应的输出语句,为了实现此功能,就需要 else 来帮忙了:

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 3 == 0)
		printf("%d能被3整除",n);
	else
		printf("%d不能被3整除",n);
	return 0;
}

由此可以看出,若 if 语句中表达式不成立,则执行 else 中的语句。
if 和 else 后默认只控制一个语句,若需要控制多个语句,则需要加上{}。
:计算输入中两个整数中较大和较小的数并打印

#include<stdio.h>
int main() 
{
	int a, b, max, min;
	scanf("%d %d", &a, &b);
	if (a > b) 
	{
		max = a;
		min = b;
	}
	else//使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句
	{
		max = b;
		min = a;
	}
	printf("较大的数是%d\n较小的数是%d", max, min);
	return 0;
}

1.2 if 语句的嵌套

在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断
:输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。

#include<stdio.h>
int main() 
{
	int n = 0;
	scanf("%d", &n);
	if (n > 0) 
	{
		printf("正数");
	}
	else if (n == 0)//这里的 if 相当于嵌套在else语句中,形成了嵌套结构
	{
		printf("零");
	}
	else
	{
		printf("负数");
	}
	return 0;
}

1.3 switch语句

if语句虽然可以处理多个分支,但处理三个以上的分支会显得繁琐,于是就有 switch 语句,用于处理有很多个分支的情况。
:输⼊任意⼀个整数值,判断其除3后的余数。

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0:
		printf("整除,余数为0\n");
		break; //注:加入break是必要的,否则不会结束,会继续执行下一个case一直到下一个break或结束
	case 1:
		printf("余数是1\n");
		break;
	case 2:
		printf("余数是2\n");
		break;
	}
	return 0;
}

此程序还有一个问题,若输入的数不符合规定(比如输入了字母,小数),则无法处理,这里有个简单的处理方法:加入 default:

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0:
		printf("整除,余数为0\n");
		break; //注:加入break是必要的,否则不会结束,会继续执行下一个case一直到下一个break或结束
	case 1:
		printf("余数是1\n");
		break;
	case 2:
		printf("余数是2\n");
		break;
	default:
		printf("输入错误,请重新输入");
		break;
	}
	return 0;
}

如果case中的所有情况(0,1,2)都不符合输入的数,则会执行default子句。
注:default 子句可以放在switch语句的任何位置,但习惯放在最后。

2 循环语句

循环语句包括 while 语句,for 语句,do while 语句。

2.1 while 语句

while的语法和if非常类似:

while(此处输入表达式)
	此处输入语句;//同样,加入大括号才可以包含更多的语句

while 的执行流程:首先判断表达式,若表达式的值为真,则进入语句,语句结束后回到判断表达式步骤,如此循环,直到表达式的值为假。
例1:输入一个整数n,打印出n个*:

#include<stdio.h>
int main() 
{
	int n = 0;
	scanf("%d", &n);
	while (n) 
	{
		printf("*");
		n--;
	}
	return 0;
}

例2:输⼊⼀个正的整数,逆序打印这个整数的每⼀位

#include<stdio.h>
int main() 
{
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		printf("%d ", n % 10);//打印n的最后一位
		n /= 10;//去除n的最后一位
	}
	return 0;
}

2.2 for语句

for 循环是三种循环语句中最常用的语句,语法格式如下:

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

表达式1:⽤于循环变量的初始化
表达式2:⽤于循环结束条件的判断
表达式3:⽤于循环变量的调整
for 循环执行流程:首先执行表达式1,对循环变量初始化,而后执行表达式2,判断表达式2是否为真,如果为真,进入循环语句,循环语句结束后进入表达式3,调整循环变量的值,而后进入表达式2,如此循环。
上面两个 while 循环的例子可以改成for循环:
例1

#include<stdio.h>
int main() 
{
	int n = 0;
	scanf("%d", &n);
	for (;n!=0;n--) //表达式都可以为空
	{
		printf("*");
	}
	return 0;
}

例2

#include<stdio.h>
int main() 
{
	int n = 0;
	scanf("%d", &n);
	for (; n != 0; n /= 10) 
	{
		printf("%d ", n % 10);
	}
	return 0;
}

2.3 do-while语句

do-while 循环的语法如下:

do
 语句;
while(表达式)

do-while 和while 唯一的区别就是会先执行一遍语句,然后再进入表达式的判断。
由于和 while 及其类似且 do-while 用的不多,在此不做过多陈述。

2.4 break 和 continue 语句

在执行循环的时候,经常需要提前终止循环,break 和 continue 两个关键字就是用来处理这种情况。
break 的作用是永久终止循环,语句遇到 break 后,就会直接跳出循环。
continue 的作用是跳过本次循环中 continue 后面的代码,重新开始循环,在 for 循环和 while 循环中有所差异,在后面会说明。

2.4.1 while 循环中的 break 和 continue

:while 中 break 举例

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;//当i等于5后,就执⾏break,循环就终⽌了
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

运行结果:
在这里插入图片描述
循环到 i = 5 时,会执行break 整个while循环结束,打印到4。

:while 中 continue 举例
将上述代码的 break 换成 continue ,运行结果是什么?

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;//当i等于5后,就执⾏continue,回到循环开头,如此循环,无法结束
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

运行结果:
在这里插入图片描述
可以看到,光标在持续闪烁,说明程序陷入死循环。这是由于调整循环变量的代码在 continue 后面,使得 i 一直为5,陷入死循环。

2.4.2 for 循环中的 break 和 continue

for 循环中 break 和 while 中作用一模一样,都是用来终止循环的,由于没有区别,不做叙述。
:for 循环中 continue 举例:

#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
		printf("%d ", i);
	}
	return 0;
}

运行结果:
在这里插入图片描述
可以看到,这里并没有和 while 一样陷入死循环,这说明了 for 循环中 continue 的作用是跳过本次循环 continue 后的代码,直接来到 for 循环中循环参数调整的部分。

2.4.3 do-while 循环中的 break 和 continue

这里do while 循环和 while 中 break 和 continue 语句几乎一模一样,也不做过多描述。

3 goto语句

C语言中提供了一种十分特殊的语法,即goto语句,下面用一个简单的例子来介绍。

#include <stdio.h>
int main()
{
	printf("打印1\n");
	goto next;
	printf("打印2\n");

next:
	printf("打印3\n");
	return 0;
}

运行结果:
在这里插入图片描述
可以看到 goto 语句用于实现运行的跳转。
注:goto 语句只能在同一个函数内实现跳转。这里两处 next 是跳转标号,可以换成其它。

总结

此文章简单的介绍了C语言中的分支语句和循环语句,本人为C语言初学者,如果有错误,欢迎大家来指正。

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值