一.分支
(一).if语句
1.语法结构如下
if(表达式)
{
语句;
}
如果表达式为真,则语句执行,表达式为假,则语句不执行
注意:在C语言中,0表示假,非0表示真(1、2、100均可)
eg:输入一个整数,判断是否为奇数
分析:使用分支语句,因为整数分为奇数和偶数,而题目要求我们在整数中找出其中的奇数
#include<stdio.h>
int main()
{
int num=0;
scanf("%d",&num);
if(num%2==1)
{
printf("%d是奇数\n",num);
}
return 0;
}
2.else
如果判断一个事件不是第一种情况,就是第二种情况,例如一个数不是正数就是负数。
这种情况下就需要使用
if(表达式)
{
语句1;
}
else
{
语句二;
}
eg:输入一个整数,判断为奇数还是偶数并打印
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
{
printf("%d 是奇数\n", num);
}
else
{
printf("%d 是偶数\n", num);
}
return 0;
}
注意:如果存在if嵌套的情况在遵循就近原则(即else与和他最近的if匹配)
(二).Switch语句
Switch语句是一种特殊形式的if...else结构,用于判断有多个结果的情况。它比多重if嵌套更加易用,可读性更好。
语法结构如下
switch (expression)
{
case value1: statement;
case value2: statement;
default: statement;
}
上述代码在运行过程中,根据表达式expression不同的值,执行相应的case分支,如果找不到就执行的default分支。
default分支:当case与表达式无法匹配到时候,这时候要不就。不做处理,要不就需要加上default分支。其中,case语句和default语句顺序不做要求,通常default语句放在最后处理。
注意:1.expression必须是整形表达式
2.case后面的值,必须是整形常量表达式
3.书写时注意,case和后面的数字之间必须有空格
4.每一个case语句中的代码执行完成后,需加上break(如果不加语句会按照顺序结构继续执行),才会跳出Switch。
二.循环
(一).while循环
语法结构如下:
while(表达式)
{
语句;
}
如何实现:首先判断表达式,如果为真,执行语句后,继续判断表达式,如果为假则退出循环。
eg:在屏幕上打印1~10的值?
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
分析:退出循环的条件是:i<=10,即当i大于10时退出循环。i可以从1运行到10
循环语句是:printf("%d ", i);实现打印操作
调整循环:通过i = i+1,i的自增运算,每执行一次循环i加1
(二).for循环
语法结构如下:
for(表达式1; 表达式2; 表达式3)
{
语句;
}
表达式1:于循环变量的初始化
表达式2:于循环结束条件的判断
表达式3:于循环变量的调整
执行流程:
1.从表达式一进入(循环变量赋值)----2.判断表达式二------真进入循环
-------循环退出假
3.执行循环语句-----4.进入表达式三(循环变量的调整)----5.回到表达式二继续判断直到退出循环
(三).do...while
语法结构如下:
do
{
循环语句;
}while(表达式)
do..while循环中先执一次“循环语句”,执行完语句,在去执行“判断表达式”,判断表达式的
结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。
所以dowhile语句最少执行一次。
(四).goto语句
C语言提供了一种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数
内跳转到设置好的标号处。虽然goto语句很灵活,但是在使用时可能会打乱程序的顺序结构,所以慎用。如果你想要快速的跳出多重循环,可以尝试goto语句,效率会比break高很多。
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next:
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}