一、if语句
1. if语句的语法形式
if(判断条件)
{
语句;
}
当表达式为真(1),语句执行,表达式为假(0),语句不执行。
举例:
//输入一个整数,判断该整数是否为偶数。
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
if(n%2==0)
printf("%d为偶数",n);
return 0;
}
2.if...else...语句的语法形式
if(判断条件)
{
语句1;
}
else
{
语句2;
}
表达意思为:如果判断条件满足,执行语句1,否则,执行语句2。
举例:
//输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数。
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
if(n%2==0)
printf("%d为偶数\n",n);
else
printf("%d为奇数\n",n);
return 0;
}
3.嵌套if,构成if else
if...else...语句只能判断两种可能性,例如:年龄大于18岁表示成年,小于18岁表示未成年。
但是,当判断多种可能性,if...else...语句无法实现,这时候可以使用if进行嵌套。
举例:
//输入一个整数,判断该整数是否大于10
#include<stdio.h>
int main()
{
int input;
scanf("%d",&input);
if(input<10)
printf("%d小于10\n",input);
else if(input==10)
printf("%d等于10\n",input);
else
printf("%d小于10\n",input);
return 0;
}
4.悬空else
如果有多个if和else,我们应记住else总是与最近的if匹配。
举例:
#include<stdio.h>
int main()
{
int a=0,b=5;
if(a==1)
if(b==5)
printf("Hellow World!\n");
else
printf("error\n");
return 0;
}
//这段代码运行结果为空,因为a初始化为0,语句判断条件为a等于1时执行语句,
//根据我们所说的else总与最近的if相匹配,可知a不等于1,接下来的语句不会进行判断,输出结果为空。
//换一种书写方式会更加清晰
#include<stdio.h>
int main()
{
int a=0,b=5;
if(a==1)
{
if(b==5)
printf("Hellow World!\n");
else
printf("error\n");
}
return 0;
}
二、switch语句
1.switch语句语法形式
switch(expression)
{
case value1:
statement;
break;
case value2:
statement;
break;
...
default:
statement;
break;
}
switch语句用来判断有多个结果的情况,可以说是另一种形式的if...else...语句。
2.switch语句的break
在switch语句中break的作用很关键,体现了分支的效果,但是,不是每一个case都要有break。
举例:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)
{
case 0:
printf("整除,余数为0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");
}
return 0;
}
正常这段代码运行应执行case 0,结果为“整除,余数为0”,但是结果为什么所有case都执行了一遍。这就是因为case语句后面没有break,在switch语句中,只有break才能跳出switch语句。
举例:
//输入数字1-7,打印出对应的星期
#include<stdio.h>
int main()
{
int n = 0;
scanf_s("%d", &n);
switch (n)
{
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;
}
3.switch语句的default
在使用switch语句,我们可能会遇到一种情况,就是我们switch后的表达式的值无法与case语句匹配的时候,我们可以引入default语句。
举例:
刚才打印星期的时候假如我们没有输入1-7内的数字,我们可以引用default,打印输入错误。
#include<stdio.h>
int main()
{
int n = 0;
scanf_s("%d", &n);
switch (n)
{
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("输入错误\n");
break;
}
return 0;
}
4.switch语句中case和default的顺序问题
在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
三、while循环
1.while语句的语法形式
while(表达式)
{
语句;
}
while语句和if语句很相似,他们的区别在于,if语句表示判断,while语句可以实现循环。
2.while循环的实践
//在屏幕上打印 1~10 的值
#include<stdio.h>
int main()
{
int i = 1;
while (i<=10)
{
printf("%d ", i);
i++;
}
return 0;
}
四、for循环
1.for循环的语法形式
for(表达式1 ; 表达式2 ; 表达式3)
{
语句;
}
表达式1:循环变量的初始化
表达式2:循环条件的判断
表达式3:循环变量的调整
2.for循环的执行流程
首先,执行循环变量的初始化,然后进行循环条件的判断,非0时执行循环语句,循环语句执行完后,执行表达式3,对循环变量进行调整,然后在执行循环条件的判断。循环条件判断为0时,循环结束。
3.for循环的实践
//在屏幕上打印 1~10 的值
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
五、do while循环
1.do while循环的语法形式
do
{
语句;
}while(表达式)
2.do while的执行流程
do while循环语句是先进入循环体,执行循环语句,执行完成后执行while后的表达式,表达式为真就会进行下一次循环,表达式为假,则不再进行循环。
注意:do while特殊的地方是无论是否满足条件都会先执行一遍循环体。
3.do while循环的实践
//在屏幕上打印1~10的值
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i += 1;
} while (i <= 10);
return 0;
}
六、break和continue语句
1.while循环中的break语句和continue语句
break举例:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d ", i);
i = i + 1;
}
return 0;
}
注释:break表示,当 i 等于5时,就执行break,循环终止。
continue举例:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
}
return 0;
}
注释:这里将break换成continue,continue表示当 i 等于5是,执行continue,跳过了之后的代码,进入到循环判断条件。因为这里跳过了i=i+1,导致程序陷入死循环。
2.for循环中的break语句和continue语句
break举例:
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d ", i);
}
return 0;
}
for循环的break和while循环的break一样,都是执行到break就跳出循环,循环终止。
continue举例:
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
注释:for循环的continue是跳过continue后的代码,直接到调整变量地方(表达式3)。
3.do while循环中的break语句和continue语句
break举例:
continue举例:
注:do while 语句中的 break 和 continue 的作⽤和 while 循环中⼏乎⼀模⼀样。