目录
引言
大家好我是行空,今天我来给大家简单的介绍一下C语言中的分支语句和循环语句。希望能帮大家快速了解C语言中的分支语句和循环语句的使用方法。C语言是一种非常强大和灵活的编程语言,它可以用来实现各种功能和结构。在本文中,我将介绍C语言中的分支语句和循环语句,它们是控制程序执行流程的重要工具。
分支语句(选择结构)
分支语句是根据条件的不同,选择执行不同的语句。C语言中有两种分支语句:if语句和switch语句。
if语句
if语句的一般形式是:
if (表达式)
{
语句1;
}
else
{
语句2;
}
其中,表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则执行语句1,否则执行语句2。else部分可以省略,这时如果表达式为假,则不执行任何语句。
if语句还可以嵌套使用,即在一个if语句中再包含一个或多个if语句,以实现多重条件的判断。例如:
if (表达式1)
{
if (表达式2)
{
语句1;
}
else
{
语句2;
}
}
else
{
语句3;
}
为了简化嵌套的if语句,C语言提供了else if的形式,它可以将多个if语句连成一个链条,每个if语句都有一个对应的条件,只有当前面的条件都不满足时,才会判断下一个条件。例如:
if (表达式1)
{
语句1;
}
else if (表达式2)
{
语句2;
}
在使用if语句时,要注意以下几点:
- 表达式的结果只看真假,不看具体的值。在C语言中,0表示假,非0表示真。
- 如果要执行的语句只有一条,可以省略大括号。但为了保持代码的清晰和一致,建议不要省略。
- else必须紧挨着if后要执行的语句,且总是与最近且未匹配的if匹配。为了避免悬空else的问题,建议使用大括号将if和else的语句块括起来。
- if语句的书写形式要注意逻辑和可读性,尽量避免模棱两可和误解的情况。
switch语句
switch语句是一种多分支的选择结构,它可以根据一个整型表达式的值,选择执行不同的语句。
switch语句的一般形式是:
switch (表达式)
{
case 常量1: 语句1; break;
case 常量2: 语句2; break;
...
case 常量n: 语句n; break;
default: 语句; break;
}
其中,表达式是一个可以求出整数值的表达式,它的值会与每个case后的常量进行比较,如果相等,则执行对应的语句,如果不相等,则继续比较下一个case。如果所有的case都不相等,则执行default后的语句。default部分可以省略,这时如果没有匹配的case,则不执行任何语句。
在使用switch语句时,要注意以下几点:
- 表达式的值必须是整型,即整数或字符。如果是浮点数或字符串,则不能使用switch语句。
- case后的常量必须是不同的,不能有重复的值。否则会造成语法错误。
- 每个case后的语句最好加上break,表示结束本分支的执行,跳出switch语句。如果不加break,则会继续执行下一个case的语句,直到遇到break或switch语句结束为止,这可能会导致逻辑错误。
- default相当于else,用于处理没有匹配的情况。它可以放在任何位置,但为了保持代码的规范和一致,建议放在最后。
循环语句(循环结构)
循环语句是用来重复执行一段语句的结构,它可以根据一定的条件,控制循环的次数和结束的时机。C语言中有三种循环语句:while语句,for语句,do while语句。
while语句
while语句的一般形式是:
while (表达式)
{
语句;
}
其中,表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则执行语句,然后再次判断表达式,如果仍为真,则继续执行语句,如此反复,直到表达式为假(0),则结束循环。如果一开始表达式就为假,则不执行任何语句。
例如,输出0到9,代码如下:
int i = 0; //定义并初始化变量
while (i <= 9) //判断
{
printf("%d\n", i); //输出
i++; //更新变量
}
在使用while语句时,要注意以下几点:
- 表达式的结果只看真假,不看具体的值。在C语言中,0表示假,非0表示真。
- 如果要执行的语句只有一条,可以省略大括号。但为了保持代码的清晰和一致,建议不要省略。
- 循环变量的定义,更新和判断要合理,避免造成死循环或跳过循环的情况。
- while语句是先判断后执行,如果一开始条件就不满足,则不会进入循环。
for语句
for语句是一种更简洁和方便的循环语句,它可以在一行中定义循环变量,判断条件和更新循环变量。
for语句的一般形式是:
for (变量的定义和初始化; 判断表达式; 更新变量)
{
语句;
}
其中,循环变量的定义是在循环开始前执行一次的语句,通常用来定义和初始化循环变量。表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则执行语句,然后执行循环变量的更新,再次判断表达式,如果仍为真,则继续执行语句,如此反复,直到表达式为假(0),则结束循环。如果一开始表达式就为假,则不执行任何语句。循环变量的更新是在每次循环结束后执行的语句,通常用来改变循环变量的值。
还是输出0到9,代码如下:
for (int i = 0; i <= 9; i++) //定义变量并初始化,判断,更新变量
{
printf("%d\n", i); //输出
}
这个代码还可以将变量定义在for循环前,例如:
int i;//定义变量
for (i = 0; i <= 9; i++) //初始化变量,判断,更新变量
{
printf("%d\n", i); //输出
}
在使用for语句时,要注意以下几点:
- 循环变量的定义,更新和判断要合理,避免造成死循环或跳过循环的情况。
- 如果要执行的语句只有一条,可以省略大括号。但为了保持代码的清晰和一致,建议不要省略。
- for语句是先判断后执行,如果一开始条件就不满足,则不会进入循环。
- for语句中的分号是必须的,不能省略。它们用来分隔循环变量的定义,表达式和循环变量的更新。
- for语句中的三个部分都可以省略,但分号不能省略。如果省略循环变量的定义,则需要在外部定义和初始化循环变量。如果省略表达式,则相当于表达式为真,即无限循环。如果省略循环变量的更新,则需要在循环体内更新循环变量。
do while语句
do while语句是一种先执行后判断的循环语句,它可以保证循环至少执行一次。
do while语句的一般形式是:
do
{
语句;
} while (表达式);
其中,语句是要重复执行的语句,表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则继续执行语句,然后再次判断表达式,如果仍为真,则继续执行语句,如此反复,直到表达式为假(0),则结束循环。
依旧是熟悉的输出0到9,代码如下:
int i = 0; //定义并初始化变量
do
{
printf("%d\n",i); //输出
i++;//更新变量
} while (i <= 9); //判断
在使用do while语句时,要注意以下几点:
- 表达式的结果只看真假,不看具体的值。在C语言中,0表示假,非0表示真。
- do和while之间必须有一个分号,表示循环体的结束。如果省略分号,则会造成语法错误。
- do while语句是先执行后判断,无论条件是否满足,都会执行一次循环体。
一些练习
下面是一些综合练习,可在学会基本语法后尝试写一写。有疑问可在评论区提出。
n*n乘法表
#include <stdio.h>
int main()
{
int n;
while (~scanf("%d", &n))
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%02d ", i * j);
}
printf("\n");
}
}
return 0;
}
最大公约数
#include <stdio.h>
int main()
{
int n, m;
while (~scanf("%d %d", &n, &m))
{
不需要确保n>m,下面算法会自动交换位置
//if (n < m)
//{
// n = n ^ m;
// m = n ^ m;
// n = n ^ m;
//}
//求最大公约数
int tmp;
while (m)
{
tmp = n % m;
n = m;
m = tmp;
}
printf("最大公约数为:%d\n", n);
}
return 0;
}
打印100~200之间的素数
#include <stdio.h>
#include <math.h>
int main()
{
for (int i = 101; i <= 200; i+=2)//素数必定是奇数(除了2);因此,从101开始i每次加2可大幅减小循环次数
{
int flag = 1;
for (int j = 3; j <= sqrt(i); j++)//一般想到j<i,想进一步优化能想到j<i/2,而给i开根号是我能想到的最优解了
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag)
printf("%d ", i);
}
return 0;
}
结语
以上,就是C语言中的分支语句和循环语句的介绍,希望对大家有所帮助!
如有错误,欢迎在评论区指出!