C语言是一种结构化的程序设计语言,其中包括顺序结构,循环结构,选择结构。今天我们就来学习一下C语言的分支与循环结构。
首先是我们的分支结构。在这里主要学习两种:if语句、switch语句。
1、if语句
if语句的表达试写法如下:
if(表达式)
语句
当我们的表达式成立的时候(为真),语句执行,表达式不成立(为假),语句不执行。
(在C语言中,0表示假,非0表示真)
由此可知,当我们的表达式结果为0时,语句无法执行。当我们的表达式结果不为0时,语句可以执行。
举个例子:判断一个数是否为正数
#include<stdio.h>
int main()
{
int x = 0;
scanf("%d", &x);
if (x > 0)
printf("%d是正数\n", x);
return 0;
}
此时我们的运行程序,当我们输入一个大于0的数,运行结果为输出x是正数,如:
由此产生了另一个问题,如果输入的数不是大于0的数,那这个数就为负数。如果要判断一个数为正数还是负数,就需要使用if....else语句了:
if(表达式)
语句1
else
语句2
该表达式的意思为如果表达式成立,执行语句1,否则执行语句2
例如:判断一个数为正数还是负数
int main()
{
int x = 0;
scanf("%d", &x);
if (x > 0)
printf("%d是正数\n", x);
else
printf("%d是负数\n", x);
return 0;
}
此时我们输入一个小于0的数,就会输出如下:
需要注意的是 if和else语句默认只能控制一条语句。如果要if语句控制两条及以上的语句时,就需要使用{}将代码括起来。else也是同理。
如果我们要对一个问题进行多重判断,在if....else语句中,我们可以将else与另一个if语句连用,形成多重判断。也就是我们的嵌套if语句。
例如:输入一个整数,判断输入的数为0,还是正数或者负数:
int main()
{
int x = 0;
scanf("%d", &x);
if (x > 0)
printf("%d是正数\n", x);
else if (x < 0)
printf("%d是负数\n", x);
else
printf("%d是0\n", x);
return 0;
}
我们第一个if...else语句中的else与第二个语句中的if进行了嵌套,构成了我们的嵌套语句。
悬空else问题:
当我们的的代码中有多个if else循环时,else总是跟最接近的if进行匹配。
2、switch语句
switch语句是另一种实现分支结构的语句,它是if else语句的一种特殊形式。
switch (expression)
{
case value1:statement
case value2:statement
default: statement
}
根据expression不同的值,来执行相应的case语句,如果找不到对应的值,则执行default语句。
switch语句后面的expression必须是整型表达式
case后的值,必须是整形常量表达式
每一个case语句后面都要加上break来跳出这个switch语句循环。
例如:输入任意一个整数值,计算除3之后的余数
int main()
{
int x = 0;
scanf("%d", &x);
switch (x % 3)
{
case 0:
printf("整除\n");
break;
case 1:
printf("余数为1\n");
break;
case 2:
printf("余数为2\n");
break;
}
return 0;
}
本节课的分支语句我们就学到这里了,下一节课我们来继续学习循环结构的内容(while循环、for循环、do-while循环)