前言
人生会面临各种岔路口,选择适合自己的路才是最好的。
C语句可分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
本篇文章后面介绍的是控制语句。
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:
1.条件判断语句也叫分支语句: if语句、 switch语句;
2.循环执行语句: do while语句、while语句、 for语句;
3.转向语句: break语句、goto语句、continue语句、 return语句。
#include
int main()
{
3 + 5;//表达式语句
;//空语句
printf("iloyo.");//函数调用语句
return 0;
}
if语句的语法结构:
if(表达式)
语句1;
else
语句2;
//单分支-if语句可以不加else
if(表达式)
语句;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
//嵌套使用
if(表达式1)
语句1;
else
{
if(表达式2)
语句2;
else
语句3;
}
如果表达式的结果为真,则语句执行
在C语言中:0表示假,非0表示真。
如果条件成立,要执行多条语句,应该使用代码块:{ }
#include
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
实例:
//代码1
#include
int main()
{
int age;
scanf("%d", &age);
if (age < 18)
printf("未成年");
return 0;
}
//代码2
#include
int main()
{
int age ;
scanf("%d", &age);
if (age < 18)
printf("未成年\n");
else
printf("成年\n");
return 0;
}
假设人的一生可分为:幼年(1-10岁)、青年(11-35岁)、中年(36-60岁)、老年(61- 岁)。已知一个人的年龄,如何知道ta处于人生哪个阶段呢?
#include
int main()
{
int age = 20;
//int age;
//scanf("%d",&age);
if (age >= 1 && age <= 10)
printf("幼年");
else if(age>10&&age<=35)
printf("青年");
else if(age>35&&age<=60)
printf("中年");
else
printf("老年");
return 0;
}
下面是一个悬空的else语句,本意是与第一个if语句匹配,输出结果应该是“haha”,为什么会出错呢?
原因一:默认情况下,if只能控制一条语句,若想控制多条语句,就要加上{ },else同上。
原因二:if-else 就近原则,else是与离它最近的if匹配的。
改正如下:
#include
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
//{
printf("hehe\n");
//}
}
else
//{
printf("haha\n");
//}
return 0;
}
下面的代码2和代码4更好,逻辑更加清晰,不容易出错。
//代码1
if (condition)
{
return x;
}
return y;
//代码2
if(condition)
{
return X ;
}
else
{
return y;
}
//代码3
int num = 1;
if(num == 5)
{
printf("hehe\n");
}
//代码4
int num = 1;
if(5 == num)
{
printf("hehe\n");
}
1.判断一个数是否为奇数
2.输出1-100之间的奇数
下划看答案
//第一题
#include
int main()
{
int n = 0;
scanf("%d", &n);
if (n % 2 == 1)
{
printf("%d是奇数\n",n);
}
else
{
printf("%d不是奇数\n",n);
}
return 0;
}
//第二题
//代码1
#include
int main()
{
int i = 1;
while (i <= 100)
{
printf("%d ", i);
i = i+2;
}
return 0;
}
//代码2
#include
int main()
{
int i;
for (i = 1; i <= 100; i++)
{
if (i % 2 != 0)
{
printf("%d ", i);
}
}
return 0;
}
switch语句也是一种分支语句。
常常用于多分支的情况,在语法上不强调顺序。
语法结构:
switch (整型表达式)
{
语句项;
}
什么是语句项?
//由一些case语句组成,如:
case 整型常量表达式:
语句;
比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
用if语句表示如下:
#include
int main()
{
int day = 0;
scanf("%d", &day);
if (1 == day)
printf("星期1\n");
else if (2 == day)
printf("星期2\n");
else if (3 == day)
printf("星期3\n");
else if (4 == day)
printf("星期4\n");
else if (5 == day)
printf("星期5\n");
else if (6 == day)
printf("星期6\n");
else if (7 == day)
printf("星期天\n");
else
printf("输入错误\n");
return 0;
}
switch语句表示:
#include
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
}
return 0;
}
如果用if…else if …else的形式表示就太复杂了,而switch语句在书写上就更简洁。
几种switch语句的书写方式:
switch(常量)
{
case 常量1:
printf(" ");
break;
case 常量2:
printf(" ");
break;
}
switch(常量)
{
case 常量1:
case 常量2:
printf(" ");
break;
case 常量3:
printf(" ");
}
witch(常量)
{
defult:
printf("输入错误");
break
case 常量1:
case 常量2:
printf(" ");
break;
case 常量3:
printf(" ");
break;
}
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
比如:
要求:输入1-5,输出的是"weekday"
输入6-7,输出"weekend"
代码实现:
#include
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
break语句的实际效果是把语句列表划分为不同的分支部分。
switch语句书写时,最好在最后一个case语句的后面加上一条break语句。
(可以避免出现在以前的最后一个case语句后面忘了添加break语句)
如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结果就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C语言中并不认为这是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
defaut:
写在任何一个case标签可以出现的位置。
当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。
每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
看完上面的内容,你学会使用switch语句了吗?
来看看这段代码的结果是什么呢?
#include
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)//switch允许嵌套使用
{
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
以上就是我对if语句和switch语句的分享,希望对你有所帮助。
道阻且长,行则将至;行而不辍,未来可期。
我们下一篇文章再见。