C语言的语句可以分为以下五大类:
1、表达式语句
2、函数调用语句
3、控制语句
4、复合语句
5、空语句
而这篇文章要分享的分支与循环就是控制语句。
c语言是一种结构化的程序设计语言,其中结构是指顺序结构、选择结构、循环结构三种结构。
其中选择结构又叫分支结构,可以使用if、switch语句实现,
而循环结构则可以利用for、while、do while语句实现
if语句
if(表达式)
{
语句
}
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
if (n%2==0)
{
printf("%d 是偶数\n",n);
}
return 0;
}
else
if()
{
//语句
}
else
{
//语句
}
例子:
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 0)
{
printf("%d 是偶数\n", num);
}
else
{
printf("%d 是奇数\n", num);
}
return 0;
}
else if
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。也就是if的嵌套
下面用一个例子说明:
int main()
{
int num = 0;
scanf("%d", &num);
if (num == 0)
printf("输⼊的数字是0\n");
else if (num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
printf("输⼊的数字是正数\n");
else
printf("输⼊的数字是负数\n");
return 0;
}
从运行结果可以看出:答案有误
原因是:else会与其距离最近的if语句结合,构成if else语句。
swich语句
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式。
语法格式:
switch(整形表达式) //注意:这里必须是整形表达式,不能是浮点型。
{
语句项;
}
这里所谓的语句项,指的是case语句。
假如我们要实现一个功能:输入1,打印周一,输入2,打印周二……我们就可以选择switch语句。
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("周一");
case 2:
printf("周二");
case 3:
printf("周三");
case 4:
printf("周四");
case 5:
printf("周五");
case 6:
printf("周六");
case 7:
printf("周日");
}
return 0;
}
但是当我们运行时,却发现:我们输入1,我们只需要程序打印周一,但是程序却将周一到周日全打印了。这是因为我们输入day的值之后,会与case之后的值由上到下进行匹配,在这个匹配过程中,并不会执行case之后的代码块。若匹配成功,就执行该case后的代码,直到遇到break才退出switch语句
所以,我们可以这样改进:在每个case语句的代码的最后都加上break语句。
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("周一");
break;
case 2:
printf("周二");
break;
case 3:
printf("周三");
break;
case 4:
printf("周四");
break;
case 5:
printf("周五");
break;
case 6:
printf("周六");
break;
case 7:
printf("周日");
break;
}
return 0;
}
switch语句中的default
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("⼯作⽇\n");
break;
case 6:
case 7:
printf("休息⽇\n");
break;
default:
printf("输⼊错误\n");
break;
}
return 0;
}
编程好习惯:
-
最后一个case加上
break
-
每个switch语句都放入一个
default
。
while循环
我们已经了解了if语句:
if(表达式)
{
语句
}
当表达式为真时,if后面的语句被执行,反之则不执行。
但是if后的语句只会被执行一次,假如我们想要他执行多次,那我怎么做呢?C语言给我们提供了while循环做到这件事。
//while语法
while(表达式)
{
循环语句;
}
如何在屏幕上打印出1~10的数字?
难道要十个printf来输出吗?显然,我们拥有while后不再需要如此麻烦。
例子:
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d\n", i);
i++;
}
return 0;
}
for循环
for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:
for(表达式1; 表达式2; 表达式3)
{
//循环语句
}
在屏幕上打印1~10的值
代码:
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
运行结果:
比较:
可以看到for循环和while循环相比的初始化部分、条件判断部分和调整部分在循环中都可以集成到一起,看起来更加简洁,使用起来更加方便。
do-while循环
在循环语句中 do while 语句的使⽤最少,它的语法如下:
do
{
//循环体语句;
}
while(表达句)
在屏幕上打印1~10的值 :
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}
执行结果:
do while语句的特点:
无论是否满地条件判断,循环体至少会被执行一次。