C语言分支循环探秘:解锁编程逻辑的无限可能 篇章1

发布于:2024-04-04 ⋅ 阅读:(27) ⋅ 点赞:(0)

目录

1.if语句

2.关系操作符

3.条件操作符

4.逻辑操作符:&&,||,!

5.switch语句

6.while循环

7.for循环

8.do-while循环

9.break和continue语句

10.循环的嵌套

11.goto

导入

        C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。

我们可以使用 if,switch,实现选择结构,使用 for,while,do while实现循环结构

1.if语句

1.1 if

if语句的语法形式如下:

if(表达式)
{
    执行语句
}

表达式的结果判断成功为0,否则为非0。0表示假,语句执行,非0表示真,语句不执行。

举例:判断张三是否不能谈恋爱

#include<stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("张三不能谈恋爱\n");
	}
	return 0;
}

1.2 else

如果张三的年龄大于等于18了,那就可以谈恋爱了,那么对于张三是能谈恋爱还是不能谈恋爱该怎么表示呢?

这时就需要 if...else...语句了,语法形式如下:

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

举例:通过张三的年龄,判断张三是否能谈恋爱,年龄小于18则不能谈恋爱,否则可以

#include<stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("张三不能谈恋爱\n");
	}
	else
	{
		printf("张三可以谈恋爱");
	}
	return 0;
}

1.3 分支中包含多条语句

如果 if 或者 else 后面不加大括号,默认只控制一条语句,比如:

	int age = 0;
	scanf("%d", &age);
	if (age > 18)
		printf("张三成年了\n");
	printf("张三不能谈恋爱\n");

你会发现无论输入是否>=18,或者<18,"张三不能谈恋爱"都会打印在屏幕上。

这是因为 if 语句默认只能控制后面的一条语句,如果 if 语句为真,执行printf("张三成年了\n);否则不执行。对于("张三不能谈恋爱\n);是独立存在的,不管 if 语句是否为真都会执行。所以,如果我们要使用 if 语句控制两条语句就需要使用 { } 将代码括起来,else 后面也可以叫上 { }。如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age > 18)
	{
		printf("张三成年了\n");
		printf("张三可以谈恋爱\n");
	}
	else
	{
		printf("张三没有成年了\n");
		printf("张三不能谈恋爱\n");
	}
	return 0;
}

1.4 嵌套if

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

比如:通过温度,判断水的固液气三态

#include <stdio.h>
int main()
{
	int temperature = 0;
	scanf("%d", &temperature);
	if (temperature <= 0)
	{
		printf("水是固态\n");
	}
	else if (temperature < 100)
	{
		printf("水是液态\n");//0<temperature<100
	}
	else
	{
		printf("水是气态\n");//100=<temperature
	}
	return 0;
}

以上就是嵌套 if 语句的语法啦,有了嵌套 if 语句,就可以实现更多复杂的逻辑判断。

练习:

1.如果年龄<18岁,打印"少年"
2.如果年龄在18岁⾄44岁打印"⻘年"
3.如果年龄在45岁⾄59岁打印"中⽼年"
4.如果年龄在60岁⾄89岁打印"⽼年"
5.如果90岁以上打印"⽼寿星"
6.输入一个人的年龄

1.5 悬空 else 问题

如果else前面有多个 if 语句,else总是和最近的 if 匹配

例如:

#include <stdio.h>
int main()
{
	int money = 0;
	scanf("%d", &money);
	if (money > 0)
		if (money > 1000)//口袋里的钱小于10块
			printf("haha\n");
	else//如果口袋里的钱为负数
			printf("hehe\n");
	return 0;
}

当口袋里的钱为负数时,你会发现它什么都不会打印。

为什么呢?

这是因为 else 是悬空的,如果 else 前有多个 if 语句,else 语句会只和最近的 if 匹配。实际上,上面的 else 是和 if(money >1000)匹配的,如果我要 else 和第一个 if 语句匹配,那么应该怎么解决呢,这时就可以加上大括号,代码如下:

#include<stdio.h>
int main()
{
	int money = 0;
	scanf("%d", &money);
	if (money > 0)
	{
		if (money > 1000)//口袋里的钱小于10块
		{
			printf("haha\n");

		}
	}
	else//如果口袋里的钱为负数
	{
		printf("hehe\n");
	}
	return 0;
}

而且,加上大括号也可以使得代码的可读性更高,所以,大家以后写代码的时候也要注意大括号的使用喔

if语句 结语

        好了,今天的分支语句就和大家介绍到这里,如果喜欢,记得点赞加收藏,并且关注我喔,我们下期见,拜拜啦~