在c语言中,包括了顺序结构,选择结构,循环结构。而在本篇,咱们来好好谈谈选择结构(分支)与循环结构(循环)两种相关的语句以及用法。
本文将会介绍: if() switch() 这两种分支语句,
while()、do while ()、for(),三种循环语句,
两个控制语句的用法:break 与 continue。
一:什么是语句?
语句 是 计算机程序中的最小执行单位,由一组指令的组合来实现某种特定的功能。而
二:语句的分类:
而在c语言中,语句分为以下五种:
2.1:表达式语句
表达式语句可以包含一个或多个表达式,并且通常以分号结尾。
表达式语句的主要目的是执行表达式。相当于main函数中的语句(指接下来说的四种语句)
2.2:函数调用语句
函数调用语句 是一种使用函数的方式。例如:
printf("hello world"); //调用stdio中的printf函数,属于函数调用语句
int add(int x,int y){
return x+y;
}
add(5,4);//调用自创的函数,也属于函数调用语句
在这个例子中,add是 函数名,5和3是 实参,它们被传递给add函数。函数调用语句的执行将导致函数被调用,并将返回值返回给调用语句的位置。而 printf 这个 函数 是在 stdio 库中,所以在开头要加上 #include <stdio.h> 将 stdio 库引用进来。
函数调用语句是程序中常见的重要语句之一,它允许程序在需要时将控制权传递给其他代码,从而实现程序的模块化和代码重用。
2.3:控制语句
控制语句 是程序中用于 控制程序流程 的语句,包括本文将要讲述的 条件语句、循环语句 和跳转语句。它们可以根据条件决定程序的执行路径,或者循环执行一段代码,或者跳过一段代码直接进入到程序的其它部分。
掌握好控制语句可以使程序的逻辑更加清晰,也可以提高程序的效率和灵活性。
2.4:复合语句
复合语句 是由 一个 或 多个 简单语句组成的语句块,常用花括号 { } 将多个语句组合在一起构成复合语句。
复合语句 可以作为 顺序结构、选择结构和循环结构的代码块。例如,以下是一个包含两个简单语句的复合语句:
{
int a = 10;
a++;
}
在此例中,我们使用了一个花括号将两个简单语句组成了一个复合语句。该复合语句包含了两个语句:
第一个语句创建了一个 int 类型的变量 a 并将其初始化为 10。
第二个语句将 a 的值加 1。
在一个复合语句中,通常需要在最后一个语句的后面加上一个分号来结束该语句块。
2.5:空语句
空语句 是指没有任何实际作用的程序语句,通常用于语法上的需要或编程调试中的占位符。在大多数编程语言中,空语句通常使用分号表示。例如,在C语言中,分号表示一个空语句:
//代码一
a+b=3;
a*b=23;
a-b=2;
//代码二
a + b = 3;
a * b = 23;
a - b = 2;
不难看出,代码二的观赏性要大于代码一。而对于代码二中的空格,就是所谓的空语句。
以上,就是语句的分类。接下来将为大家讲解分支语句与循环语句。
三:分支语句(选择语句)
分支语句(选择语句)是被分到 选择结构 里面的。接下来,我将为大家讲解其中的 if()语句与switch语句。
3.1 if()选择语句
if()语句的意思无非就是来判断一件事的两个选择(是或非)。举个例子:你在水果店里面选购水果,如果把这个过程细分一下,无非就是要与不要这两个选择。比如看到苹果,选择要还是不要,要买苹果就把苹果装进袋子里,不要就走向下一个水果的地方,再次选择,以此类推。
以上的场景,在c语言中就和if()选择语句的逻辑是类似的。我们在if()语句中,条件:0位假,非0为真。这个可以这么理解:你选择要卖苹果,那么你买苹果这件事情发生了,那么就是条件为真。相反,你没有选择买苹果,那么买苹果这件事情没有发生,那么就是条件为假。
在理解了if()语句的运行逻辑,那我们该怎么用它呢?
3.1.1 if()语句的语法结构
通常情况下,可以分为三类:
第一类:
if(判断表达式) 语句;
第二类:
if(判断表达式) 语句;
else 语句;
第三类:
if(判断表达式)语句;
else if(判断表达式)语句;
else 语句;
不难发现,这中间引用了两个新的函数名:else:与else if()。
else :这个函数名的用途是给予if()条件为假时所执行的语句。通俗来讲,if(条件)中条件为假 就会执行else : 后面的语句。
else的匹配:else是和它离的最近的 if 匹配的。
//这里将用代码来说明这个现象 int x = 1, j=12; if(x==1) j++;// 1 if(x+1==1) j--;// 2 else j=0;
在这个代码片段中,else 会和 2 处的if进行匹配。这里推荐读者使用编译器试一下,看看多个 else 与单个 if 会擦出什么样的火花。
如果前面的if()执行,则会跳过所有的else与else if()。
else if(): 这个函数名是在 if() 条件为假时再次判断条件。例如
if(条件 1 )
else if(条件 2)
条件1 在 if() 中为假,转而去判断 else if() 中的 条件2 。
这里注意一点:我们不难发现,else 与 else if()语句中都有 “else” 这个语句。所以,他也遵循上文所提到的 else的匹配 这一原则。
3.1.2 复合语句
当然,我们也可以在if()后面写多条语句,即复合语句。我们常用 “{}”来放入复合语句,我们称这个部分为代码块。
举个例子:
#include <stdio.h>
int main() {
int num1, num2, temp;
printf("请输入第一个数字:");
scanf("%d", &num1);
printf("请输入第二个数字:");
scanf("%d", &num2);
//判断两个数字的大小
if(sum2 > sum 1){
// 交换两个数字的值
temp = num1;
num1 = num2;
num2 = temp;
}
printf("%d>%d\n", num1,sum2);
return 0;
}
在此处,我们就用if()来判断前者是否小于后者。若是,则交换两个数字的值。
而 交换值 这些代码就是一个复合语句。并用“{}”来确定复合语句的活动范围(简单来说“{”是开始复合语句,“}”是结束复合语句)。
复合语句的作用:
1、在程序设计中复合语句被看成是一条语句,而不是多条语句。
2、在只能使用单条
3、这里只能写一条指令,而用复合语句就可以满足一条指令的限制,而执行多条指令。
3.2 switch()语句
switch()语句基本运行原理(T表真,F表假)
switch( 整形表达式 ) :其中的 整形表达式 可以理解为: 条件 。这样更方便在下列一群 case 中去寻找 “入口” 。值得注意的是: 整形表达式 必须是 整形数据 ,输入浮点型等其他类型的数据则会报错。
case 整形常量表达式 : 此处的 整形常量表达式 与switch语句中的 整形表达式 类似,区别是前者是常量(即不可改变的量),后者是变量(可改变的量)。 而设置case 就是为 整形表达式 开放攻选择的 “入口”(稍后会以代码举例)。
default : 结束switch语句,即“出口”。可以写在任何一个case语句可以出现的位置,当 switch 表达式的值不匹配所有 case 的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中有且仅有一条default语句。
而下面一个就是用switch语句来实现判断是否为工作日的代码:
#include <stdio.h>
int main() {
int day;
printf("请输入星期数(1-7):");
scanf("%d", &day); //日期
//以日期作为 条件 执行 switch 语句
switch(day) {
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n"); //case 1 —— case 5 共用的部分
break; //作用于default类似,即“出口”,不在向下运行
case 6:
case 7:
printf("今天是星期日\n");
break;
default:
printf("输入有误,请输入1-7之间的数字\n");
break;
}
return 0;
}
假设我输入3,那么swtich语句中的day值就会为3。之后会逐一向以下case后面的常量去判断。当case 3 执行成功后,会以case 3 这条语句为入口,执行下面所有的语句(包括case )直至switch语句块结束或者中途碰到 break 或者default。
运行结果:
由于篇幅较长,下一篇为大家介绍循环语句
——————————————————————————————————————————————————————————————————————————————————————
下一章指引:C语言中的分支循环语句(循环语句)-CSDN博客