1. 分支语句
1.1 if语句
1.1.1 if 的使用
if语句的语法形式如下:
if(表达式)
{
语句;
}
表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。在C语言中,0为假,非0为真。
1.1.2 else 的使用
if...else...语法形式如下:
if(表达式)
{
语句;
}
else
{
语句;
}
例子
输入一个整数,判断是否为奇数,如果是则打印是奇数,否则打印是偶数。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d",&num);
if(num % 2 == 1)
printf("%d是奇数",num);
else
printf("%d是偶数",num);
return 0;
}
1.1.3 嵌套 if 的使用
在if...else...语句中,else可以与另一个if语句连用,构成多重判断。
例子:输入一个整数,判断输入的整数是0,还是正数或者负数。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d",&num);
if(num==0)
printf("输入的数字是0\n");
else if(num>0)
printf("输入的数字是正数\n");
else
printf("输入的数字是负数\n");
return 0;
}
1.1.4 悬空else问题
如果有多个if和else语句,可以记住一条规则:else总是跟最接近的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;
}
程序的运行结果是什么都不输出
这就是悬空else问题,实际上else是与最接近的if匹配,这样后边的if else语句是嵌套在第一个if语句中的,如果第一个if语句不成立,嵌套if和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;
}
1.2 switch语句
switch语句是一种多路分支语句,可以根据一个变量的值选择执行不同的代码块。基本语法如下:其中,表达式是一个整数表达式,case关键字后的常量是可能的表达式值。当表达式的值等于某个case关键字后的常量时,执行相应的语句块,直到遇到break关键止。如果没有一个case关键字后的常量匹配表达式的值,那么将执行default关键字后的语句块。
switch(表达式)
{
case 常量1:
语句1;
berak;
case 常量2:
语句2;
break;
default:
语句3;
break;
}
1.2.1 break
练习:输入任意一个整数值,计算除3之后的余数
如果去掉break,会出现什么情况?
出现此种情况的原因是在switch语句中使用break才能跳出switch语句,如果某一个case语句后边没有break语句,代码会继续往下执行,有可能执行其他case语句中的代码,直到遇到break语句结束。
1.2.2 default
switch后的表达式中的值无法匹配代码中的case语句的时候,就会执行default语句。练习:
2. 循环语句
2.1 while语句
2.1.1 语法
while语句的基本语法如下:
其中,表达式是一个布尔表达式,只要它的值为真(非零),就会不断执行花括号内的语句。
while(表达式)
{
语句;
}
练习:在屏幕上打印1-10的值
2.1.2 while循环中的break和continue
A.break举例
B.continue举例
continue 是继续的意思,在循环中的作⽤就是跳过本次循环中 continue 后边的代码,继续进⾏下⼀次循环的判断。当i等于5后,就执行continue,直接跳过continue后边的代码,去循环的判断的地方,因为这里跳过了i=i+1,所以i一直为5,程序陷入死循环。
2.2 do while语句
2.2.1 语法
do while 语句的基本语法如下:
do
{
语句;
}while(表达式);
与while语句不同,do-while语句至少执行一次花括号内的语句,然后检查表达式的值。只有当表达式的值为真(非零)时,才会再次执行花括号内的语句。
练习:在屏幕上打印1-10的值
2.2.2 do while循环中的break和continue
A.break举例
B.continue举例
2.3 for语句
2.3.1 语法
for语句基本语法如下:
for(初始化;条件;更新)
{
语句;
}
练习:在屏幕上打印1-10的值
2.3.2 for循环中的break和continue
A.break举例
B.continue举例
2.4 while循环和for循环的对比
for循环和while循环在实现循环的过程中都有初始化、判断、调整三个部分,但for循环的三个部分非常集中,便于代码的维护,while循环的三个部分比较分散,所以从形式上for循环更优一些。
2.5 循环的嵌套
#include <stdio.h>
int main()
{
int i = 0;
//循环产⽣100~200的数字
for(i=100; i<=200; i++)
{
//判断i是否为素数
//循环产⽣2~i-1之间的数字
int j = 0;
int flag = 1;//假设i是素数
for(j=2; j<i; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
printf("%d ", i);
}
return 0;
}