C语言的分支与循环

本文介绍了C语言中的结构化编程概念,包括if、else、if...else...、if的嵌套结构,以及三种循环结构:while、for和do...while。此外,还讲解了break和continue语句在循环中的作用,以及goto语句的使用情况。文章通过示例代码详细阐述了每个结构的功能和用法。
摘要由CSDN通过智能技术生成

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构。
我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。

1·if语句

if语句的语法形式如下:
if ( 表达式 )
语句

表达式成⽴(为真),则语句执行,表达式不成立(为假),则语句不执行。
在C语⾔中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。
例子:输⼊⼀个整数,判断是否为奇数

#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
return 0;
}

2·else语句

如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表示呢?
这⾥就需要 if...else... 语句了,语法形式如下:
if ( 表达式 )
    语句1
else                                                                                                                                                        语句2

3·if与else的嵌套

在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。

例子:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数
 

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

上面的代码中橙色背景的代码也是嵌套在 if 语句中的,构成了嵌套的 if 语句。
以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

注意:如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。

例子:

#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("我爱C语言\n");
else
printf("我爱作者\n");
}
return 0;
}

在这个程序中 else 是和第⼆个 if进行匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不成立,嵌套 if 和 else 就没机会执行了,最终啥都不打印。
总之记住,else 总是跟最接近的 if 匹配

4·while循环

语法形式:                                                                                                                                          while(表达式)
语句;

例子:在屏幕上打印1~10的数字

#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}

5·for循环

语法形式如下:

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

语句;

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

6·do-while循环

语法形式:                                                                                                                                        do                                                                                                                                                       语句;
while(表达式);

以上三种循环,while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循;而 do while 循环则是先直接进⼊循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下⼀次,表达式为假,则不再继续循环。

7. break和continue语句


在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了 break 和 continue 两个关键字,就是应该到循环中的。
break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执
行。
continue 的作用是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的。

break

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

代码运行结果:1 2 3 4

由此可见,break 的作用是永久的终止循环,未来我们在某个条件发生的时候,不想再继续循环的时候,就可以使用 break 来完成。

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;
}

代码运行结果:1 2 3 4 5 6 7 8 9 10

由此可见,在 for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环无需再执执行后续某些操作的时候,就可以使用
continue 来实现。

8. 循环的嵌套


前面学习了三种循环 while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决
问题,就是我们所说的:循环嵌套。

例子:题目有多组输入数据,每一行输入三个a,b,c(0 < a, b, c < 1000),作为三角形的三个边,用空格分隔。针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	while(scanf("%d %d %d",& a,& b,& c)!=EOF)
		if (a == b && a == c && a == c)
		{
			if (a + b >= c && a + c >= b && b + c >= a)
				printf("Equilateral triangle!");
			else
				printf("Not a triangle!");
		}
			else if(a == b || a == c|| b == c)
			{
			if (a + b >= c && a + c >= b && b + c >= a)
				printf("Isosceles triangle!");
			else
				printf("Not a triangle!");
			}
			else if (a != b && a != c & a!= c)
			{
			if(a + b >= c && a + c >= b && b + c >= a)
				printf("Ordinary triangle!");
			else
				printf("Not a triangle!");
				}
		
	return 0;
}

9·goto语句

C语言提供了⼀种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同一个函数
内跳转到设置好的标号处。但同时,C语言提供了一种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同一个函数内跳转到设置好的标号处。

但是 goto 语句也不是一无是处,如果想快速跳出某个语句,使用goto 就非常的方便了。

#include<stdio.h>
int main()
{
    printf("我爱比特\n");
goto end;
    printf("我爱作者\n");
end:
    printf("跳过我爱作者的打印,直接来到这里\n");
    return 0;
}

代码运行结果:

我爱比特 

跳我爱作者的打印,直接来到这里

今天我的介绍到这里了,谢谢大家。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值