文章目录
什么是语句
c语言中由一个分号;所隔开的就是一条语句。例如:
printf("hello World!");
int i = 0;
分支语句
一、if语句
1.语法结构
- 单分支
if (表达式)
{
语句;
}
- 双分支
if (表达式)
{
语句1;
}
else
{
语句2;
}
- 多分支
if (表达式1)
{
语句1;
}
else if (表达式2)
{
语句2;
}
else
{
语句3;
}
注意
虽然可以直接在if语句的条件判断后直接加语句,但是如果直接加语句,一个if语句默认只有后一个语句为条件为真时的执行语句。所以说就算只跟有一个语句,也建议语句写在大括号中,作为一个好的习惯。这样做可以让内容更直观,还不容易出错,提高了代码的可读性
。
2.悬空else
//例如:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
输出结果为:
无
因为else总是与最近的if匹配
,而最外层的if条件不满足,所以无输出结果。
建议写法为:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
二、switch语句
1.语法结构
当if语句实现分支太麻烦时,我们就可以用switch语句。语法结构为:
switch (表达式) {//这里的表达式一般为整型结果的常量表达式或者枚举类型
case 表达式:
语句体1;
break;
case 表达式:
语句体2;
break;
......
default:
语句体n + 1;
break;
}
- break语句的实际效果是把语句列表划分为不同的部分。
例如:
#include <stdio.h>
int main()
{
int day = 1;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;//以上语句会按顺序依次执行,直到碰到break结束。
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
输出结果是:
weekday
2.default语句
- 可以写在
任何一个case标签
可以出现的位置。 - 当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。
- 所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。
编程好习惯
- 在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。
循环语句
循环的三要素:
- 条件初始化
- 条件判定
- 条件更新
一、while循环
1.语法结构
while (表达式)
{
循环语句;
}
2.break在while循环中的作用
- while中的break是用于永久终止循环的。
例如:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d ", i);
i = i + 1;
}
return 0;
}
输出结果为:
1 2 3 4
3.continue在while循环中的作用
- continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接
跳转到while语句的判断部分。进行下一次循环的入口判断。
例如:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
i = i + 1;
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
输出结果为:
1 2 3 4 6 7 8 9 10
二、for循环
1.语法结构
for (表达式1;表达式2;表达式3)
{
循环语句;
}
//表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断
//循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
2.while循环与for循环比较
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for (i = 1; i <= 10; i++)
{
printf("hehe\n ");
}
//实现相同的功能,使用while
i = 1;//初始化部分
while (i <= 10)//判断部分
{
printf("hehe\n");
i = i + 1;//调整部分
}
return 0;
}
- 可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离
较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹。 for循环使用的频率也最高。
3.break和continue在for循环中
在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。 但是还是
有些差异:
- continue执行后会先跳到条件更新处,再进行条件判断。
- 这样好处就是可能不会因为continue跳过条件更新而造成死循环!!!
例如:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
//i == 5时,一直返回条件判断,无法进行条件更新,而条件判断又满足,故会造成死循环
}
return 0;
}
运行结果:
会造成死循环
三、do…while循环
1.语法结构
do
{
循环语句;
}
while (表达式);
例如:
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
} while (i < 10);
return 0;
}
输出结果:
10
2.do语句的特点
- 循环至少执行一次!
- 在最后的地方有个 ;
3.do while循环中的break和continue
continue执行后continue之后的语句不再执行(类似while循环),直接进行下一次while处的判断。
使用不当也是会造成死循环
例如:
#include <stdio.h>
int main()
{
int i = 10;
do
{
if (5 == i)
continue;
printf("%d\n", i);
i -= 1;
} while (i > 1);
return 0;
}
如果有任何需要改正的或者建议,欢迎留言。