目录
1.分支与循环结构
C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这一种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。
我们可以使用if、switch实现分支结构,使用for、while、dowhile 实现循环结构。
2.if分支
2.1if语句
语法形式:
if(表达式)
语句;
当表达式成立时,执行下列的语法;表达式不成立时,不执行语法;
2.2 else语句
语法形式
if(表达式)
语句1;
else
语句2;
当表达式成立时,执行语句1;否则执行语句2;
2.3 分支包含的多个语句
默认在 if 和 else 语句中默认都只控制⼀条语句
当需要控制多个语句时,需要使用“ { } ”表示控制;if和else都可以使用“{ }”来控制语句;
下面是一个例子,展示如何用if和else语句来控制多个语句的执行:
x = 10
if (x > 5)
{
print("x is greater than 5");
print("x is a big number");
}
else
{
print("x is smaller than or equal to 5");
print("x is a small number");
}
输出结果为:
x is greater than 5
x is a big number
2.4 嵌套if语句
if语句可以嵌套使用,从而实现更复杂的条件判断。嵌套的if语句可以在if或else语句块中任何位置出现,这使得我们能够构建更加灵活的条件判断结构。
下面是一个例子,展示如何使用嵌套的if语句来进行复杂的条件判断:
x = 10
y = 5
if (x > 5)
{
print("x is greater than 5");
if(y > 2)
print("y is greater than 2");
else
print("y is smaller than or equal to 2");
}
else
print("x is smaller than or equal to 5");
输出结果为:
x is greater than 5
y is greater than 2
在这个例子中,首先判断x是否大于5,如果是,则进入第一个if语句块。在第一个if语句块中,又嵌套了一个if语句,用来判断y是否大于2。因为y的值为5,所以第二个print语句被执行了。
3.关系操作符
C语⾔⽤于⽐较的表达式,称为“关系表达式”,⾥⾯使⽤的运算符就称为“关系运算符”,主要有下⾯6个操作符:
1) > ⼤于运算符
2) < ⼩于运算符
3) >= ⼤于等于运算符
4) <= ⼩于等于运算符
5) == 相等运算符
5) != 不相等运算符
下面的例子,展示的是各个操作符的使用
例如,以下代码使用了关系运算符来比较两个数的大小关系:
int a = 10;
int b = 5;
printf(a > b); True
printf(a < b); False
printf(a == b); False
printf(a != b); True
printf(a >= b); True
printf(a <= b); False
说明是运算符表示的是错误的
注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。有时候,可能会不⼩⼼写出下⾯的代码,它可以运⾏,但很容易出现意料之外的结果。
相等运算符 == 用于检查两个值是否相等,例如:
int x = 5;
int y = 7;
if (x == y)
{
printf("x 等于 y");
}
else
{
printf("x 不等于 y");
}
赋值运算符 = 用于将一个值赋给一个变量,例如:
int x = 5;
int y = x;
printf(y) # 输出 5
需要注意的是,将相等运算符 == 错误地使用为赋值运算符 = 可能会导致错误。例如:
int x = 5;
if(x = 5) # 错误:应该使用 x == 5
printf("x 等于 5");
因此,在编程时要注意区分相等运算符 == 和赋值运算符 =。
4.条件操作符
条件操作符,也称为三目运算符,是C语言中用来进行条件判断的一种非常方便的运算符。
4.1语法形式
condition ? expression1 : expression2
其中,condition为一个布尔表达式,如果其值为真,则运算结果为expression1,否则运算结果为expression2。
举一个简单的例子,假设我们需要从两个数中选出较大的一个,那么可以使用条件操作符实现如下:
int a = 10, b = 20;
int max = (a > b) ? a : b;
在这个例子中,如果a大于b,则max的值为a,否则max的值为b。
4.2 条件操作符的优点
它可以让代码更加简洁和易读。举个例子,假设我们需要判断一个数是否为偶数,并根据结果执行不同的操作,那么使用条件操作符可以让代码变得更加清晰,如下所示:
int num = 10;
(num % 2 == 0) ? printf("偶数") : printf("奇数");
在这个例子中,如果num能被2整除,则输出“偶数”,否则输出“奇数”。
需要注意的是,虽然条件操作符可以方便地进行条件判断,但在某些情况下,使用if语句可能更加清晰和易读。比如,当条件判断较为复杂或需要执行多个语句时,if语句的可读性可能更好。
总的来说,条件操作符是C语言中一种强大的工具,可以帮助我们更加高效地进行条件判断和编写清晰易读的代码。在实际编程中,我们需要根据具体情况选择合适的语句和运算符,并不断优化代码的可读性和效率。
5.逻辑操作符
逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。
1.逻辑与(&&)
逻辑与操作符用来连接两个表达式,当且仅当两个表达式都为真时,输出结果为真。以下为逻辑与操作符的形式:
表达式1 && 表达式2
如果表达式1为假,则表达式2不会被执行。例如,考虑以下代码:
int a = 5;
int b = 10;
if (a > 3 && b < 15)
{
printf("Both expressions are true");
}
上述代码中,第一个表达式a > 3为真,而第二个表达式b < 15也为真,因此输出结果为
“Both expressions are true”。
2.逻辑或(||)
逻辑或操作符同样用来连接两个表达式,当两个表达式中有一个为真时,输出结果为真。以下为逻辑或操作符的形式:
表达式1 || 表达式2
如果表达式1为真,则表达式2不会被执行。例如,考虑以下代码:
int a = 5;
int b = 10;
if (a > 7 || b < 15)
{
printf("At least one expression is true");
}
上述代码中,第一个表达式a > 7为假,而第二个表达式b < 15为真,因此输出结果为
“At least one expression is true”。
3.逻辑非(!)
逻辑非操作符用来取反一个表达式的值,当表达式为真时,输出结果为假;当表达式为假时,输出结果为真。以下为逻辑非操作符的形式:
! 表达式
例如,考虑以下代码:
int a = 5;
if (!(a > 7))
{
printf("The expression is false");
}
上述代码中,表达式a > 7为假,但由于加入了逻辑非操作符,因此输出结果为“The expression is false”。
综上所述,逻辑操作符在C语言中扮演着重要的角色,可以帮助我们进行复杂的逻辑判断,提高程序的可读性和可维护性。请注意,在使用逻辑操作符时,一定要注意表达式的运算顺序和优先级,以免引发意料之外的错误。
其中,逻辑与和逻辑或有短路求值的特点,即当第一个操作数已经确定表达式的值时,后续的操作数不再进行计算。
若第一个操作数为false,则逻辑与的结果一定为false;若第一个操作数为true,则逻辑或的结果一定为true。
6.switch语句分支
C语言中的switch语句是一种非常有用的条件控制语句。它可以根据一个表达式的值,从一组可能的选项中选择一个来执行。这个表达式可以是任何基本数据类型,如整数、字符或枚举类型等。在本文中,我们将讨论如何使用switch语句来编写C程序。
6.1 switch语句的语法
switch语句的基本语法如下所示:
switch (expression)
{
case constant-expression1:
// 代码块1
break;
case constant-expression2:
// 代码块2
break;
case constant-expression3:
// 代码块3
break;
default:
// 代码块4
}
在上面的语法中,expression是一个表达式,它可以是任何基本数据类型。接下来是一组case语句,每个case语句都将在表达式的值等于常量表达式1、表达式2或表达式3时执行相应的代码块。如果表达式的值与所有case语句的常量表达式都不匹配,则将执行default语句块。
如果没有使用break语句,程序会继续执行下一个case语句的代码块,直到遇到break语句或switch块结束。如果没有匹配到任何case语句,也没有default语句,则不执行任何代码块,switch块结束。
下面是一个简单的switch语句示例:
#include <stdio.h>
int main() {
int num = 2;
switch (num) {
case 1:
printf("数字是 1\n");
break;
case 2:
printf("数字是 2\n");
break;
case 3:
printf("数字是 3\n");
break;
default:
printf("没有匹配到数字\n");
break;
}
return 0;
}
运行上面的程序将输出“数字是 2”,因为num的值为2,它匹配了第二个case语句。
6.2switch语句的使用场景
switch语句适用于具有多种可能情况的条件控制语句。使用if语句来完成相同的操作将会非常冗长。以下是一些switch语句的经典应用场景:
1.根据用户输入执行不同的操作
使用switch语句来根据用户输入的不同选项执行不同的操作。例如,根据用户选择的选项,我们可以选择显示当前时间、日期或帮助信息。
2.处理不同的错误类型
使用switch语句来处理不同类型的错误。例如,当发生输入错误、文件读取错误或网络连接错误时,我们可以根据错误类型执行相应的操作。
3.执行基于枚举类型的操作
使用switch语句来执行基于枚举类型的操作。例如,我们可以根据不同的枚举类型选择不同的操作,比如颜色、方向等。
总结:我们讨论了C语言中的switch语句。switch语句是一种非常有用的条件控制语句,可以根据表达式的值从一组可能的选项中选择一个来执行。switch语句适用于具有多种可能情况的条件控制语句。如果您在编写C程序时需要进行条件控制,那么switch语句将是您最好的选择之一。