C语言学习
目录
一、C语言中的语句是什么?
C语言中的语句可分为以下五类:
- 表达式语句。
- 函数调用语句。
- 控制语句。
- 复合语句。
- 空语句。
本章节主要介绍控制语句中的分支语句,那什么是控制语句呢?
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由语句定义符组成。
C语言有九种控制语句。可分为以下三类:
1.条件判断语句也叫分支语句:if 、switch ;
2.循环执行语句:do while 、while 、for ;
3.转向语句:break 、goto 、continue 、return ;
二、分支语句
1. if语句
if 语句语法结构
语法结构:
//选择
if (表达式)
语句;
//双分支
if (表达式)
语句1;
else
语句2;
//多分支
if (表达式1)
语句1;
else if (表达式2)
语句2;
else
语句3;
C语言中0为假!非0为真!
若条件成立,要执行多条语句,如何编写程序?
#include <stdio.h>
int main()
{
if (表达式)
{
语句1;
语句2;
语句3;
......
}
else
{
语句1;
语句2;
语句3;
......
}
return 0;
}
这里的一对{ }就是一个代码块。
关于else
以下两组代码的打印结果相同吗?
代码示例1:
#include <stdio.h>
int main()
{
int Num1 = 0;
int Num2 = 2;
if (Num1 == 1)
if (Num2 == 2)
printf("nice");
else
printf("bad");
return 0;
}
代码示例2:
#include <stdio.h>
int main()
{
int Num1 = 0;
int Num2 = 2;
if (Num1 == 1)
{
if (Num2 == 2)
{
printf("nice");
}
}
else
{
printf("bad");
}
return 0;
}
代码1运行结果:
代码2运行结果:
bad
else的匹配:else是和离它最近的 if 匹配!
所以好的代码书写习惯很重要,看看下列代码的对比;
代码1:
#include <stdio.h>
int main()
{
int x = 3;
int y = 5;
if (x>y)
{
return x;
}
return y;
}
代码2:
#include <stdio.h>
int main()
{
int x = 3;
int y = 5;
if (x>y)
{
return x;
}
else
{
return y;
}
}
代码2优于代码1,书写逻辑更清晰,具有更好的可读性。
代码3
#include <stdio.h>
int main()
{
int Num = 3;
if (Num == 6)//若少打一个 = 为(Num = 6)条件判断为非0,任然会执行代码块内的语句。
{
printf("luck");
}
return 0;
}
代码4
#include <stdio.h>
int main()
{
int Num = 3;
if (6 == Num)//若少打一个 = 为(6 = Num)变量不能为常量赋值,运行时编译器会报错。
{
printf("luck");
}
return 0;
}
代码4优于代码3,不容易出错。
if语句小练习
输出1-100之间的奇数
#include <stdio.h>
int main()
{
int Num = 0;
while (Num <= 100)
{
if (Num %2 == 1)
{
printf("%d ", Num);
}
Num++;
}
return 0;
}
运行结果
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
2. switch 语句
switch 语句也是一种分支语句,常用于多分支语句。
switch 语句语法结构
switch (整型表达式)
{
语句项;
}
语句项是啥?
是一些case语句。
先来个代码示例:
#include <stdio.h>
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;
default:
printf("输入错误");
break;
}
return 0;
}
在 switch 语句中,无法直接实现分支,搭配 break 使用才能实现真正的分支。
break 语句的实际效果是把语句列表划分为不同的分支。
编程好习惯:
在最后一个 case 语句的后面加上一条 break 语句。这样做可以避免在之前最后一个 case 语句后再加新的 case 语句时忘记在前 case 语句上添加 break 语句。
当 switch 表达式的值不匹配所有 case 标签的值时怎么办?
default 子句在 switch 表达式的值不匹配所有 case 标签时,default 子句后面的语句就会执行。default 子句可以写在任何一个case标签可以出现的位置,每个switch语句中只能出现一条default子句。
编程好习惯:
在每个 switch 语句中都放一条default子句,在后边可以再加一个 break
switch 语句小练习
下列代码的打印结果是什么?
#include <stdio.h>
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;
}
运行结果:
m = 5, n = 3
原因:
n=1;进入switch 语句,先进入case 1:,m值变为3;
后没有 break 语句,接着进入case 2:,n值变为2;
接着进入 case 3:,进入嵌套 switch 语句,因为n值为2,
所以进入case 2:,m值变为4,n值变为3,遇break跳出;
接着进入 case 4:,m值变为5,遇 break 跳出。
printf 函数打印:m = 5,n = 3
总结
以上就是今天要讲的内容,本文简单介绍了 if 和 switch 分支语句的使用,而C语言中还有许多语句可以完成复杂的逻辑运行。