前言:Hello大家好😘,我是心跳sy,为了更好地形成一个学习c语言的体系,最近将会更新关于c语言语法基础的知识,今天更新一下分支循环语句的知识点,我们一起来看看吧~
目录
🌈心跳sy的C语言专栏 ⏪C语言知识点汇总到这了,有兴趣的友友可以订阅看看哟~
一、什么是语句?💫
1、⭐️语句的定义⭐️
在C语言中,语句是用于执行操作的代码单元。
语句总是以分号(;)结尾,这是C语言中语句的标志;语句可以简单,也可以复杂,它们可以执行各种操作,如计算、赋值、函数调用、条件执行、循环等。
2、⭐️语句的分类⭐️
👉C语句可分为以下五类:
🔶表达式语句
由表达式加上分号组成,例如:a+b=c;是一个赋值语句,用于将 b+c 的结果赋值给 a;
🔶函数调用语句
用于调用函数并执行它的代码,例如:printf("Hello,World!") 调用了标准库中的printf函数来输出文本到控制台;
🔶控制语句
用于控制程序的执行流程;包括条件语句(如 if 和 switch)和循环语句(如 for、while 和 do while)
🔶复合语句
由花括号 { } 包围的一个或多个语句的集合;
🔶空语句
只有一个分号的语句,不执行任何操作,通常用于占位符或者满足语法要求;
👉本节主要介绍控制语句中的分支语句和循环语句~
二、分支语句 💫
👉分支语句又叫条件判断语句,是一种选择结构,包括 if 语句和 switch 语句;
1、⭐️if 语句⭐️
⭕️if语句:用于基于条件执行代码块
⭕️语法结构:
if(表达式)
语句;
if (condition)
{
//如果条件为真,执行这里的代码
}
⭕️if 语句还可以与 else 语句结合使用,用于在条件为 false 时执行另一段代码:
if(表达式)
语句1;
else
语句2;
if (condition)
{
// 如果条件为真,执行这里的代码
}
else
{
// 如果条件为假,执行这里的代码
}
⭕️if 多分支,语句可以嵌套,以便更复杂的条件检查:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
if (condition1)
{
// 如果条件1为真,执行这里的代码
}
else if (condition2)
{
// 如果条件1为假且条件2为真,执行这里的代码
}
else
{
// 如果条件1和条件2都为假,执行这里的代码
}
👉代码演示:
#include <stdio.h>
//代码1
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
}
🔸输入的年龄若小于18,则输出“未成年”并换行;
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
}
🔸输入年龄若小于18则输出未成年,否则输出成年;
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else if(age>=18 && age<30)
{
printf("青年\n");
}
else if(age>=30 && age<50)
{
printf("中年\n");
}
else if(age>=50 && age<80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
🔸输入年龄若小于18,则输出少年;若大于等于18小于30,则输出青年;若大于等于30小于50,则输出中年;若大于等于50,小于80,则输出老年;若大于等于80,则输出老寿星;
🔴注意:
else 的匹配问题:else 是和它离得最近的 if 匹配的。
2、⭐️switch 语句⭐️
👉在C语言中,switch 语句提供了一种根据不同条件执行不同代码块的方法,它是一种多分支选择结构,适用于一个变量或表达式有多种可能的值(比如5、6、7或以上个值)时进行决策。
👉switch 语句的语法如下:
switch (expression)
{
case constant1:
// 如果expression等于constant1,则执行这里的代码
break;
case constant2:
// 如果expression等于constant2,则执行这里的代码
break;
// 可以有任意数量的case
default:
// 如果expression与所有constant都不匹配,则执行这里的代码
break;
}
⭕️其中 expression 通常是一个变量或整型表达式,constant1、2是整型常量表达式,每个 case 后跟一个常量值(如整数常量或字符常量),如果 expression 的值与某个 case 后的常量值相等,则执行该 case 后的代码块,直到遇到 break 语句为止。如果没有任何 case 常量与 expression 的值匹配,且提供了 default 标签,则执行 default 后的代码块。
⭕️break 语句用于退出 switch 语句,防止执行其他 case 的代码块。如果忘记在每个 case 的代码块末尾添加 break 语句,程序将继续执行下一个 case 的代码块,直到遇到 break 为止,这可能是程序员想要的行为,也可能导致错误,所以在使用时需格外注意。
👉以下演示了根据一周的不同天数打印不同的消息:
#include <stdio.h>
int main() {
int day = 3; // 假设今天是星期三
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("无效的天数值\n");
break;
}
return 0;
}
🔸switch 语句检查变量 day 的值,并根据其值执行相应的 case 分支。由于 day 的值为3,程序将打印“今天是星期三”。如果 day 的值不在1到7之间,程序将执行 default 标签后的代码块。
三、循环语句 💫
1、⭐️while 循环⭐️
🍀上文介绍的if语句,当条件满足的情况下,if语句后的语句执行,否则不执行。 但是这个语句只会执行一次。
❓由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢?
⭕️在C语言中,while 循环是一种基本的循环结构,它允许你重复执行一段代码,直到指定的条件不再满足。while 循环在循环开始之前检查条件,因此它可能完全不执行循环体中的代码,如果初始条件就不满足。while 循环的语法如下:
while (condition)
{
// 循环体:只要condition为真,就会重复执行的代码块
}
👉condition 是一个表达式,每次循环开始前都会对其进行求值。如果 condition 的值为真,则执行循环体内的代码块。执行完循环体内的代码后,程序会回到 while 语句处,再次检查 condition 的值,若为真则再次执行循环体中的代码,这个过程会一直重复,直到 condition 的值为假,此时循环终止,程序会继续执行循环之后的下一条语句。
🔸举例:
//计算1到5的和:
#include <stdio.h>
int main()
{
int i = 1; // 初始化变量i
int sum = 0; // 初始化总和变量
while (i <= 5)
{
// 当i小于或等于5时循环
sum += i; // 将i加到总和
i++; // 递增i
}
printf("1到5的和是: %d\n", sum); // 输出结果
return 0;
}
🔸初始条件满足,循环开始执行。循环体中的代码将 i 加到 sum 上,并将 i 递增。每次循环结束后,都会再次检查 i 是否小于或等于5。当 i 的值递增至6时,条件不再满足,循环终止。
1.1、🌈while 循环中的 break
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;
printf("%d ", i);
i = i+1;
}
return 0;
}
🔸可见输出结果是1234,说明循环只输出了四次,到第五次结束循环;
⭕️总结:
break在while循环中的作用: 在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。
1.2、🌈while 循环中的continue
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
🔸可以看到,i 进循环之后,i 不断增加,当 i 等于5时,进行了一次 continue,之后输出就没有 i 等于5的值,但之后仍然进入循环,持续输出直到满足 while 的条件为止,循环结束;
⭕️总结:
continue在while循环中的作用就是: continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。
2、⭐️for 循环⭐️
⭕️语法: for(表达式1; 表达式2; 表达式3)
循环语句;
🔶表达式1为初始化部分,用于初始化循环变量的;
🔶表达式2为条件判断部分,用于判断循环时候终止;
🔶表达式3为调整部分,用于循环条件的调整。
//使用for循环 在屏幕上打印1-10的数字。
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
⭕️在for循环中也可以出现break和continue,他们的意义和使用方法在while循环中是一样的,注意遇到 continue ,会跳过 continue 后面的代码,直接去循环的调整部分。
2.1、🌈for 循环的变种
int main()
{
for (;;)
{
printf("hehe\n");
}
return 0;
}
🔸此代码for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,很容易导致问题,比如上述代码判断部分恒为真,最后输出无数次hehe,且不会停止,会一直循环。
int main()
{
int i = 0;
int j = 0;
//这里打印多少个hehe?
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
printf("hehe\n");
}
}
return 0;
}
🔸此代码包含了一个双层嵌套的 for 循环结构。外层 for 循环控制变量 i ,内层循环控制变量 j,会输出10*10=100个hehe
int main()
{
//代码3
int i = 0;
int j = 0;
//如果省略掉初始化部分,这里打印多少个hehe?
for (; i < 10; i++)
{
for (; j < 10; j++)
{
printf("hehe\n");
}
}
return 0;
}
🔸此代码最后只打印出10个hehe,这是因为 i 和 j 都省略了初始化部分,尤其是 j 省略了 j=0,这会导致第一次外循环进来的时候,j 的内循环已经循环了三次,j 已经变成10了,当 i 再次增加的时候内循环就进不去了,所以只输出了10个。
2.2、🌈for 循环与 while 循环
🔶while 循环在循环开始前检查条件,如果条件为真,则执行循环体中的代码。
适用场景:
🔸当循环的结束条件在循环体内部动态计算时。
🔸当只需检查一个条件就决定是否继续循环时。
🔶for 循环也用于重复执行代码,但它在循环开始前就初始化变量,并在每次循环结束时更新变量,检查条件。
适用场景:
🔸当已知循环的执行次数时。
🔸遍历数组或集合等需要计次遍历的情况。
区别:
🔶初始化:for 循环将初始化、条件检查和步进操作集于一体,适合于执行已知次数的循环;while 循环在循环开始前仅检查条件,适用于未知循环次数的情况。
🔶代码结构:for 循环的代码结构集中,使得循环的初始化、条件和步进一目了然,便于阅读和管理;while 循环的这些元素可能分散在代码的不同部分,需要更多的注意力来确保逻辑正确。
3、⭐️do...while() 循环⭐️
⭕️语法:
do
循环语句;
while(表达式);
⭕️do while循环至少执行一次,使用的场景有限,所以不是经常使用。
int main()
{
int i = 10;
do
{
printf("%d\n", i);
} while (i < 10);
return 0;
}
🔸从显示结果来看,do while()循环先执行一次代码块内容,之后才进入while语句中的判断,所以输出一次10。
🔸在do while() 循环中也可以出现break和continue,他们的意义和使用方法在while循环中是一样的
本文到此结束💞💞💞感谢大家花费宝贵的时间阅读本文章,制作不易,希望大家多多支持呀😘😘😘,如有任何问题欢迎各位大佬在评论区批评指正!!!