目录
do......while循环中的break和continue
欢迎大家!今天我将给大家详细介绍C语言中的分支和循环语句。
一、分支语句
1.if语句
if语句的语法形式如下:
if(表达式)
语句
表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。
在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果是非0,则语句执行。
举个栗子,根据年龄判断一个人是否是未成年,代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age = 10;
if (age < 18)
{
printf("未成年\n");
return 0;
}
}
运行结果如下:
2.else语句
如果根据这个人的年龄判断他不是一个未成年人,那么他就是成年人,这里就要用到if...esle...语句来进行判断。
if...else...语句的语法形式如下:
if(表达式)
{
语句1;
}
else
{
语句2;
}
通过if...else...语句根据年龄判断一个人是否成年,代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age = 20;
if (age < 18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
return 0;
}
运行结果如下:
3.嵌套if
在if...else...语句中,else可以与另一个if语句连用,构成多重判断。
嵌套if的语法形式如下:
if(表达式)
{
语句1;
}
else if(表达式)
{
语句2;
}
else
{
语句3;
}
比如:根据这个人的年龄判断他是未成年,还是青年或壮年,代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age = 26;
if (age < 18)
{
printf("未成年\n");
}
else if (age >= 18 && age <= 30)
{
printf("青年\n");
}
else
{
printf("壮年\n");
}
return 0;
}
运行结果如下:
4.悬空else问题
if与else的匹配:else只会与离自己最近的if匹配
举个栗子:
#define _CRT_SECURE_NO_WARNINGS
#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是与if(a == 1)相匹配,但不是这样匹配的,这个else是与离它最近的if进行匹配的,也就是if(b== 2)。所有第一个if判断为假,程序不会进入分支,而是跳转return0所有就如我们所看到的,什么也没打印。
5.if语句要注意的一些问题
(1)if表达式后面 “ ;”表示一条语句,如果有多条语句,必须用{}括起来。
比如:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age = 20;
if (age > 18)
printf("成年\n");
printf("未成年\n");
return 0;
}
运行结果如下:
为了避免出现这种情况,if后面跟一条语句,如果if后面有多条语句,我们要用{}括起来。
(2)在C语言中0表示假,非0表示真,表达式成立的条件是为真就进入选择语句。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int age = 10;
if (0)
{
printf("未成年\n");
}
return 0;
}
运行结果如下:
在if语句中,表达式为0,不会进入选择语句。
6.switch语句
(1)switch
switch(整形表达式)
{
case 整型常量表达式:
语句;
break;
default:
break;
}
比如输入1-7的一个数字,打印对应的星期,代码如下所示:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int input = 0;
scanf("%d", &input);
switch (input)
{
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;
}
运行结果如下:
7.switch语句的一些注意事项
1.在case后加上break,当满足符合的case情况后,会跳出switch语句,否则可以会把符合的case情况后面的所有结果也打印出来。
2.每个switch语句中只能出现一条default子句,它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句,也可以在default子句后边加上一个 break ,使switch语句更加完美。
二、循环语句
1.while循环
while循环的语法结构:
while(表达式)
{
循环语句;
}
下面来实现一个简单的代码:
打印1-10的数字
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
运行结果如下:
while循环中的break和continue
(1)break介绍
break的功能:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
{
break;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果如下:
当i=5时,满足条件,遇到break,跳出循环,所以就打印1 2 3 4。
(2)continue介绍:
continue的功能:用于终止本次循环,本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分,进行下一次循环的判断。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
{
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果如下:
当i=5时,满足条件,遇到continue,跳转到while语句的判断部分,i的值不能继续增加,永远等于5,进行下一次循环的判断,光标一直再闪,说明代码陷入了死循环,所以这里打印出来的就是1 2 3 4 死循环。
2.for循环
for循环的语法结构:
for(表达式1;表达式2;表达式3)
//表达式1:初始化部分 表达式2:判断部分 表达式3:调整部分
{
循环语句;
}
下面打印一个1-10的代码演示一下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
运行结果如下:
for循环跟上面的while循环相比,循环中的三个条件更加集中,修改和使用非常方便。
for循环中的break和continue
(1)break介绍
break的功能就是直接结束循环。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (5 == i)
{
break;
}
printf("%d ", i);
}
return 0;
}
运行结果如下:
当i=5满足条件时,遇到break,直接结束循环。
(2)continue介绍
continue的作用是终止本次循环,后面的代码不再继续执行,进入到调整部分。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (5 == i)
{
continue;
}
printf("%d ", i);
}
return 0;
}
运行结果如下:
这里i=5,遇到continue,终止本次循环,不会打印出5,进入到调整部分。
3.do......while循环
do……while循环的语法结构:
do
{
循环语句;
}while(表达式);
do......while循环语句的特点就是:先执行再判断,循环至少执行一次。
举个栗子,输出1-10:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
运行结果如下:
do......while循环中的break和continue
(1)break介绍
break的作用是直接终止do......while循环
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
{
break;
}
printf("%d ", i);
i++;
} while (i < 10);
return 0;
}
运行结果如下:
当i=5的时候执行if语句,break,而break则直接终止do......while循环。
(2)continue介绍
continue的作用是终止本次循环后面的代码,继续执行上面的代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
{
continue;
}
printf("%d ", i);
i++;
} while (i < 10);
return 0;
}
运行结果如下:
当i=5时,执行continue,终止本次循环后面的代码,继续执行上面的代码,调整部分在后面,所以i无法变化,光标一直在闪,说明代码陷入了死循环,所以打印1 2 3 4 死循环。
4.goto语句
goto
是一个跳转语句,允许程序在特定条件下无条件地跳转到程序中的标签位置。 由于滥用 goto
可能导致代码难以理解和维护,所以不建议使用。
下面用个代码给大家演示:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
again:
printf("hello\n");
goto again;
return 0;
}
运行结果如下:
从图中我们可以看出来,陷入死循环的原因是当代码执行完之后通过goto语句又跳转上去了,不断打印hello,代码陷入死循环。
三、总结
很高兴你们能耐心地看到最后,以上是对C语言中分支和循环语句的介绍,通过学习并掌握这些知识点,能够让我们对C语言有更加深入的了解,我们要不断地亲自去敲代码、去实践,才能够提高我们C语言的技术与能力。
我也会继续努力,不断地去学习,与大家分享我自己在学习过程中的一些知识与心得,很高兴能在这里遇到你们,欢迎你们经常来我的博客看看,下期博客,不见不散!