文章目录
分支语句
循环语句
goto语句
分支语句
1.if-else 语句
if-else语句是由if、else(else if)三部分组成的语句快,我们可以把if和else简单翻译成“如果”和“否则”。我在这里把if-else语句分成了三种:单if语句、if-else双分支语句、if - else if - else多分支语句。
1)单if语句:即只有if的分支语句
语法
if(条件表达式)
{
执行的语句;
}
代码案例
#include <stdio.h>
int main()
{
int age = 18;
if (age >= 18)
{
printf("可以考驾照");
}
return 0;
}
运行结果:
代码分析:这里我们赋给age的值是18,所以条件表达式为真,执行if后面花括号里的语句。如果条件表达式为假,则跳过。
2)if-else双分支循环语句
双分支循环语句相当于一种判断的关系,非此即彼,一定只执行if和else中的其中一条语句。
语法规则:
if(条件表达式)
{
执行语句1;
}
else
{
执行语句2;
}
如果条件表达式为真,执行if后面的语句,如果为假执行else后面的语句。
代码案例:
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d",&age);
if (age >= 18)
printf("adult\n");//成年
else
printf("nonage\n");//未成年
}
运行结果:
3)if-else if-else多分支语句
多分支语句相当于是多选题。
语法规则:
if(条件表达式)
{
执行语句1;
}
else if(条件表达式2)
{
执行语句2;
}
···
else if(条件表达式n)
{
执行语句n;
}
else
{
执行语句n+1;
}
前n个条件表达式,哪条为真就执行哪条语句。如果前n个都为假,则执行else后面的语句。
代码案例:
int main()
{
int score = 80;
if (score >= 0 && score < 60)
printf("挂科\n");
else if (score >= 60 && score < 70)
printf("中等\n");
else if (score >= 70 && score <= 90)
printf("良好\n");
else if (score >= 90 && score <= 100)
printf("优秀\n");
else
printf("成绩出错\n");
}
运行结果:
2.switch语句
switch语句是一种用于处理多分支的语句。
语法规则:
switch(整形表达式)
{
case整形常量表达式1:
语句1;
case整形常量表达式2:
语句2;
}
switch后面的()内是整形表达式,意思是表达式的计算结果的数据类型必须是整形,case后面的表达式是整形常量表达式。
这个语法我们这样理解:switch的英文意思是开关,那么switch后面整形表达式的值代表的就是这个开关在哪里被打开。
代码案例:
int main()
{
int day = 3;
switch (day)
{
case 1:
printf("工作\n");
case 2:
printf("工作\n");
case 3:
printf("工作\n");
case 4:
printf("工作\n");
case 5:
printf("工作\n");
case 6:
printf("休息\n");
case 7:
printf("休息\n");
}
return 0;
}
从上面的程序可以看出,程序是从上往下走的,从入口(day = 3,也就是case = 3)开始,往下一行一行执行。但是这样就无法让程序终止,程序一直执行到最后一行。所以这里就要用到break这个关键字。
break关键字
break充当程序出口的角色。让程序读到它时直接跳出自己当前所在的子程序。
代码案例:
int main()
{
int day = 6;
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;
}
程序从case 6入口进入,然后读了一句printf(“休息\n”),再读到break出口出选择程序块。
default子句
default子句和if-else中的else作用类似,都是在前面的所以条件不满足时才会执行。
代码案例:
int grade = 85;
switch (grade) {
case 90:
printf("A");
break;
case 80:
printf("B");
break;
case 70:
printf("C");
break;
default:
printf("D");
break;
}
3分支语句的嵌套
分支语句也就是if语句和switch语句,都可以嵌套。
代码案例:
int main()
{
int a = 1;
int b = 0;
if (a == 1)
{
printf("上大学\n");
printf("你是否要努力学习?(1/0):");
scanf("%d", &b);
if (b == 1)
print("找到好工作\n");
else
printf("放飞自我,毕业即失业\n");
}
return 0;
}
swtich嵌套
#include <stdio.h>
int main() {
int x = 3;
int y = 3;
switch (x % 2) {
case 1:
switch (y)
{
case 0:
printf("first");
case 1:
printf("second");
break;
default: printf("hello");
}
case 2:
printf("third");
}
return 0;
}
循环语句
循环语句就是一些重复执行的语句。C语言中的循环结构有三种常见的语句,分别是while、for、do-while循环,他们大同小异,结构上基本分为初始化部分,条件判断部分,调整部分,下面来看一下。
1) while循环语句
语法规则:
while(表达式)
{
循环语句;
}
其他语句
这里的while循环是先判断表达式的真假,再决定是否执行循环语句,如果为真则执行,为假则不执行。
代码案例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 1;//初始化部分
while (i <= 10)//条件判断部分
{
printf("%d ", i);//循环体
i++;//调整部分
}
return 0;
}
结果为:
while语句中的break和continue
接下来可以看看while循环的执行流程图:
break在while循环中的作用:由图我们可以看出,当循环中遇到break时,就会终止循环。
代码案例:
nt main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;//永久终止循环
printf("%d ", i);
i = i + 1;
}
return 0;
}
结果:
由此可以看出,break是用于永久终止循环。
continue在while循环中的作用:continue用于终止本次循环,跳过后面的语句来到while语句的判断部分。
代码案例:
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
}
return 0;
}
注解:当i = 5的时候,后面的语句直接跳过,再回到while循环的判断语句中执行,此时i仍然是等于5,继续跳过,这样下去一直是死循环。
for循环语句
语法:
for(表达式1;表达式2;表达式3)
{
循环语句;
}
其中表达式1为初始化部分,用于初始化循环变量;表达式2为条件判断部分,用于判断循环时候终止;表达式3为调整部分,用于循环条件的调整。
代码案例:
int main()
{
int i = 0;
for (i = 1/*初始化*/; i <= 10/*判断部分*/; i++/*调整部分*/)
{
printf("%d ", i);
}
return 0;
}
结果:
goto语句
goto语句相当于是一个传送门,可以直接直接改变代码执行的逻辑,即可以直接跳到目标代码去执行。但它如一把双刃剑,用得好编程效果很不错,滥用就会自废武功。
语法如下:
goto标记名称;
标记名称:其他语句;
代码案例:
int main()
{
int age = 0;
again:
scanf("%d", &age);
if (age < 18 && age >= 1)
printf("未成年\n");
else if (age >= 18 && age <= 121)
printf("成年\n");
else
{
printf("输入错误,请重新输入\n");
goto again;
}
return 0;
}
结果:
我们输入180的时候,执行else里的语句,先执行printf(“输入错误,请重新输入\n”)然后执行goto again,again在程序最开始,所以我们可以重新输入然后继续进行选择判断。