分支与循环
C语言作为一门结构化的语言,主要有顺序结构、选择结构、循环结构。我们可以使用if、switch语句来实现分支结构,用while、for、do-while循环语句来实现循环结构。
分支与循环(一)——分支结构
1.if语句
if语句的结构很简单,它的语法形式如下:
if(表达式)
语句
如果表达式为真,那么就执行语句;如果表达式为假,那么语句不执行。
例如:输入一个整数,判断是否能被3整除
#include <stdio.h>
int main()
{
int i = 0;
scanf("%d",&i);
if(i/3==0)
printf("%d能被3整除");
else
printf("%d不能被3整除");
return 0;
}
if…else都只能控制一条语句,如果想要控制多条语句该怎么办呢?那就需要用{}将代码括起来。建议大家写代码的时候使用括号,让代码的可读性更高。
if…else语句其实就是一个简单的逻辑判断,使用起来并不难。如果我们需要构建一个多重判断,只需要将if语句进行嵌套。如果有多个if和else,else总是和最近的if匹配。
比如:输入一个整数,判断它是正数、负数还是0
#include <stdio.h>
int main()
{
int i = 0;
scanf("%d",&i);
if (i == 0)
{
printf("输入的数字是%d\n", i);
printf("这个整数为0\n");
}
else if (i >= 0)
{
printf("输入的数字是%d\n", i);
printf("这个整数为正数\n");
}
else //else后不加条件表达式
{
printf("输入的数字是%d\n", i);
printf("这个整数为负数\n");
}
return 0;
}
接下来我们用一道编程题来帮助大家更深入地理解if分支语句。
例:编写一个程序,输入三角形的三条边,求其周长。注意:三条边的长度是否合理。
题解:
1.题目要求输入三条边的长度,在这里我们需要考虑两个问题:需要创建几个变量?变量的类型是什么?因为有三条边,所以需要创建三个变量,边长并不一定是整数,所欲i将变量类型定义为double。
2.要求三条边要构成一个三角形,根据三角形定义可知,两边之和必须大于第三边。这就是我们的判断条件,这就可以使用刚学过的if…else语句。
3.求周长,将三条边加起来。
代码实现如下:
int main()
{
double a = 1.0;
double b = 1.0;
double c = 1.0;
double zc = 1.0;
printf("请输入三角形三条边的长度:\n");
scanf("%lf %lf %lf", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a)
{
zc = a + b + c;
printf("三角形的周长为%.2lf\n", zc);
}
else
{
printf("长度输入不合理,三条边无法构成三角形\n");
}
return 0;
}
2.switch语句
C语言中也使用switch语句来实现分支结构。switch语句是一种特殊的if…else语句,它可以判断条件有多个结果的情况,比多重if语句可读性更好。
例如:输入数字判断游戏是否开始
switch (1)
{
case 1:
printf("游戏开始\n");
break;
case 0:
printf("游戏结束\n");
break;
default:
printf("输入错误,请重新选择\n");
break;
}
上面代码中,根据输入不同的值,执行相应的case分支,如果找不到对应的case分支,就执行default分支。switch后面的值必须是整型表达式,case后的值,必须是整型常量表达式。
例如:将上面if语句实现的”输入一个整数,判断是否能被3整除“改写为switch语句。
int main()
{
int i = 0;
scanf("%d", &i);
switch (i % 3)
{
case 0:
printf("%d能被3整除\n", i);
break;
default:
printf("%d不能被3整除\n", i);
break;
}
return 0;
}
注意:每一个case语句的代码执行完之后,必须在后面加上break才能跳出switch语句。
在switch分支中,case语句和default语句的顺序是没有要求的,不过一般情况下把default语句放在最后。
关于分支语句if和switch的介绍就到这里啦,下期见!