C语言分支循环语句
一. 分支语句
1. if
2. switch
if语句的结构主要是:
第一种:
if(表达式)
语句:
例子:
#include <stdio.h>
int main()
{
int age = 0;
scanf_s("%d", &age);
if (age >= 18)
{
printf("成年\n");
}
}
第二种:
if(表达式)
语句1:
else
语句2:
例子:
#include <stdio.h>
int main()
{
int age = 0;
scanf_s("%d", &age);
if (age >= 18)
{
printf("成年\n");
}
else
{
printf("未成年\n");
}
}
第三种:
if(表达式)
语句1:
else if(表达式)
语句2:
else
语句3:
例子:
#include <stdio.h>
int main()
{
int age = 0;
scanf_s("%d", &age);
if (age >= 18 && age<50)
{
printf("壮年\n");
}
else if(age<18 && 6<=age)
{
printf("青少年\n");
}
else
{
printf("老年\n");
}
}
else的匹配: else是要它离的最近的if匹配的(重点)
表达式的结果只要看是真还是假。如果是真,则语句就会执行。
在C语言中如何辨别真假呢?
0表示假,非0表示真
if分支语句中的语句最好还是加入{},这样让人看起来更加美观,且能输入更多。如果没有{}只能输入单语句。条件表达式中最好用的是&&逻辑与和 || 逻辑或。
switch语句的语法结构:
在switch语句中,不能直接进行分支,但是我们可以通过与case使用实现分支
switch(整形表达式)
语句:
其中语句项主要是一些case语句:
如下:
case 整形表达式:
语句:
例子:
#include<stdio.h>
int main()
{
int day = 0;
scanf_s("%d", &day);
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;
default:
printf("输入错误");
break;
}
return 0;
}
注意:输入scanf_s,主要是vs2022出于安全考虑的
二. 循环语句
循环的意思其实就是多次执行,前提要满足循环所需要的条件
1. while
2. for
3.do while
while语句的语法结构:
while 整形表达式:
语句:
while的语句主要是单语句,如果想要多条语句要加上括号{}
例如:
#include<stdio.h>
int main()
{
int t = 0;
scanf_s("%d", &t);
while (t < 10)
{
printf("hello word");
t++;
}
return 0;
}
如果不加上括号{},例如:
#include<stdio.h>
int main()
{
int t = 0;
scanf_s("%d", &t);
while (t < 10)
printf("hello word");
t++;
return 0;
}
假设输入5,结果就只执行,而且是死循环:
printf("hello word");
而t++;只会执行一次,最终t一直6
t++;
上面这些只是while的基本语法
while语句中的break和continue用法挺重要的
break在while循环中的作用:
其实在循环中只要遇到break,就会停止后期的所有的循环,直接终止循环,所有:while的break是用于永久终止循环
你可以先看下面的代码结果是,后面我会揭晓的答案
#include<stdio.h>
int main()
{
int num = 5;
while ( num < 10)
{
printf("hello");
break;
num++;
printf("hello");
}
return 0;
}
结果只会输出一个hello,不会执行num++;这条语句
continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
先看一下面,如果知道结果,那你就已经知道continue用法
#include<stdio.h>
int main()
{
int num = 5;
while ( num < 10)
{
if (num == 5)
{
printf("hello");
continue;
}
num++;
printf("hehe");
}
return 0;
}
答案是死循环打印hello
for循环
语法结构:
for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
结果是一到十的数字
其实while循环和for循环,大部份场景都能互换,主要是语法区别,我个人觉得for循环会更常用,下面是for循环和while循环的对比:
int i = 0;
//实现相同的功能,使用while
i=1;//初始化部分
while(i<=10)//判断部分
{
printf("hehe\n");
i = i+1;//调整部分
}
//实现相同的功能,使用while
for(i=1; i<=10; i++)
{
printf("hehe\n");
}
break和continue在for循环中
我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。
但是还是有些差异:
//代码1
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ",i);
}
return 0;
}
//代码2
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0;
}
for语句的循环控制变量
建议:
1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}
下面有一道题,是不错的,可以看看
#include <stdio.h>
int main()
{
int i = 0;
int num = 0;
for (i = 0, num = 0; num = 0; i++, num++)
num++;
return 0;
}
do…while()循环
语法结构:
do
循环语句;
while(表达式);
循环至少执行一次,使用的场景有限,所以不是经常使用。
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}while(i<10);
return 0;
}
do while循环中的break和continue
其实用法与for,while差不多
//do while的break代码
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == i)
break;
printf("%d\n", i);
}while(i<10);
return 0;
}
//do while的continue代码
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == i)
continue;
printf("%d\n", i);
}while(i<10);
return 0;
}