引言: C语言中的分支与循环语句是编程中常用的工具,它们让程序变得更加灵活和智能化。在本文中,我将详细介绍C语言中的分支与循环语句,包括if语句、if-else语句、多个else if语句、switch语句、if嵌套、循环语句以及循环嵌套。通过对这些语句的深入了解,我们可以更好地掌握C语言的编程技巧。
一、分支语句
1.1 单分支语句: if
if 语句是C语言中最基本的条件语句,它用于根据条件的真假来决定程序执行的路径。if语句的基本语法如下:
if (条件表达式)
{
//如果条件为真,则执行这里的代码
}
1.2 双分支语句:if-else
if-else 语句允许在条件为假时执行备选代码块。其语法如下:
if (条件表达式)
{
//如果条件为真,则执行这里的代码
}
else
{
//如果条件为真,则执行这里的代码
}
1.3 多分支语句:else if 语句和 switch 语句
1.3.1 else if 语句
多个 else if 语句: 可以使用多个 else if 语句来增加更多的条件判断。多个 else if 语句的基本语法如下:
if (条件表达式1)
{
//如果条件为真,则执行这里的代码
}
else if (条件表达式2)
{
//如果条件为真,则执行这里的代码
}
else if (条件表达式3)
{
//如果条件为真,则执行这里的代码
}
// 可以继续添加更多的else if语句
else
{
//如果条件为真,则执行这里的代码
}
if语句使用注意事项:
1.多分支语句中的代码块只能执行一个(及上图中表达式1、2、3和 else 只能选一个执行),若想执行多个代码块,连用 if 即可,代码如下:
if(条件)
{
// 如果条件为真,则执行这里的代码
}
if(条件)
{
// 如果条件为真,则执行这里的代码
}
if(条件)
{
// 如果条件为真,则执行这里的代码
}
...
2.若有悬空 else,else 与最近的 if 匹配!代码如下:问运行结果
int a=0;
int b=2;
if(a==1)
if(b==2)
printf("hehe\n");
else
printf("haha\n");
运行结果是什么?什么都不输出,因为 else 和 if(b==2) 匹配。
1.3.2 switch 语句
switch 语句用于根据不同的取值,执行不同的代码块。它通常用于替代多个else if 语句的情况。在像 C 或 C++ 这样的编译型语言中,switch 语句通常使用跳转来实现,而else if 则需要对比多个表达式语句,所以当分支很多时,switch 可能比一系列 else if 语句的执行更快。switch 语句的基本语法如下:
switch (整形表达式)
{
case 值1(整形常量表达式,下同):
// 如果表达式的值等于值1,则执行这里的代码
break;
case 值2:
// 如果表达式的值等于值1,则执行这里的代码
break;
// 可以继续添加更多的case语句
default:
// 如果表达式的值不匹配任何case,则执行这里的代码
break;
}
switch 语句使用注意事项:
-
每个 case 必须有 break 或者其他终止语句: 在每个 case 块结束时,务必添加语句 break,以避免继续执行下一个 case 块。case 是 switch 的入口,break 是出口。
-
case 值必须是整形常量表达式,字符也是整形: switch 在语句中的 case 标签必须是整形常量表达式,字符型也属于整形。
-
default 位置任意,建议放最后: 考虑在 switch 语句中包含 default 块,以处理未匹配到任何 case 值的情况。这样可以确保即使没有匹配到任何 case 值,程序也不会出现错误。其中default 位置任意,并不会放在开头就先匹配 default 块。
1.4 嵌套if语句
在C语言中,可以嵌套多个 if 语句来实现更复杂的条件逻辑。例如:
if (条件1) {
if (条件2) {
// 如果条件1和条件2同时为真,则执行这里的代码
}
}
关于分支语句的基本知识点已经说完了,我们来看一个实例:
KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。
输入描述:
题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。
输出描述:
针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。
int main() {
//三角形三条边
int a=0;
int b=0;
int c=0;
while(scanf("%d %d %d",&a,&b,&c)!=EOF)
{
if(a>0 && a<1000 && b>0 && b<1000 && c>0 && c<1000)//输入合法
{
if(a+b>c&&a+c>b&&b+c>a)//是三角形
{
if(a==b&&a==c&&b==c)
printf("Equilateral triangle!\n");//等边三角形
else if(a==b||b==c||c==a)
printf("Isosceles triangle!\n");//等腰三角形
else
printf("Ordinary triangle!\n");//普通三角形
}
else //不是三角形
printf("Not a triangle!\n");
}
}
return 0;
}
二、 循环语句
循环语句在满足特定条件的情况下反复执行某个代码块,以达到重复执行的目的。C语言中有三种循环语句:while 循环、do while 循环和 for 循环。它们的基本语法如下:
2.1 while循环:
while 循环在条件为真时重复执行代码块,直到条件变为假为止。其语法如下:
while (条件表达式)
{
// 只要条件为真,就会重复执行这里的代码
}
2.2 do while循环:
do while 循环首先执行一次代码块,然后检查条件是否为真,如果为真,则重复执行代码块。其语法如下:
do
{
// 至少执行一次这里的代码
} while (条件表达式);
2.3 for循环
for 循环提供了一种更加简洁的循环结构,允许在一个语句中初始化循环控制变量、检查循环条件和更新循环控制变量。其语法如下:
for (初始化语句; 循环条件; 循环后操作)
{
// 在每次循环迭代时执行这里的代码
}
2.4 嵌套循环
循环嵌套可以通过将一个循环放置在另一个循环的循环体内来实现。通过循环嵌套,可以处理更复杂的问题,例如二维数组的遍历或多维数组的操作。
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
// 循环嵌套中的代码块
}
}
关于分支语句的基本知识点已经说完了,我们来看一个实例:
输出九九乘法表,代码如下:
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <=9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%-2d ", j,i,i * j);
}
printf("\n");
}
return 0;
}
结论: 通过对C语言的分支和循环语句的深入了解,我们可以更好地掌握C语言的编程技巧。if、else if、switch、循环嵌套等语句的灵活运用,可以使我们的程序更加智能,提高代码的可读性和可维护性。同时,循环语句的掌握能够帮助我们实现代码的循环执行,提高编程效率。总的来说,分支和循环语句是C语言中必不可少的基本语法,熟练掌握它们将使我们的编程能力得到很大提高。