跳到主要内容

C语言编程入门之选择语句

在C语言中,逻辑表达式用于进行逻辑运算,通常用于控制流语句(如ifwhile)中的条件判断。逻辑运算符主要有三个:&&(逻辑与)、||(逻辑或)和!(逻辑非)。

1. 逻辑与(&&

逻辑与运算符用于检查两个条件是否同时为真。如果两个操作数均为真,结果为真;否则结果为假。

示例:

int a = 5;
int b = 10;
if (a > 0 && b > 5) {
printf("Both conditions are true.\n");
}

2. 逻辑或(||

逻辑或运算符用于检查至少一个条件是否为真。如果至少一个操作数为真,结果为真;如果两个操作数均为假,结果为假。

示例:

int a = 5;
int b = 3;
if (a > 0 || b < 0) {
printf("At least one condition is true.\n");
}

3. 逻辑非(!

逻辑非运算符用于取反一个条件。如果条件为真,结果为假;如果条件为假,结果为真。

示例:

int a = 0;
if (!a) {
printf("a is false (0).\n");
}

4. 逻辑表达式的组合

逻辑运算符可以组合使用,形成复杂的逻辑表达式。需要注意运算符的优先级,逻辑运算符的优先级较低。

示例:

int a = 5;
int b = 10;
int c = 15;

if ((a < b && b < c) || (a == 5)) {
printf("Condition is true.\n");
}

5. 短路评估

在使用逻辑运算符时,C语言采用短路评估策略:

  • 对于&&,如果第一个操作数为假,后续操作数不会被评估。
  • 对于||,如果第一个操作数为真,后续操作数也不会被评估。

示例:

int a = 5;
int b = 0;

if (b != 0 && (a / b) > 1) { // 不会执行 a / b,因为 b 为 0
printf("This won't print.\n");
}

6. 使用场景

逻辑表达式通常用于条件控制结构中,如ifwhilefor等语句:

if (a > 0 && b > 0) {
// 执行某些操作
}

while (x < 10 || y > 5) {
// 循环操作
}

总结

  • 逻辑表达式用于判断条件,主要有逻辑与(&&)、逻辑或(||)和逻辑非(!)。
  • 逻辑表达式可以组合使用,并遵循短路评估策略。
  • 这些表达式广泛应用于控制流语句中,帮助实现条件判断和循环控制。

在C语言中,if-else语句用于根据条件执行不同的代码块。它是控制流语句中最常用的结构之一。

1. 基本语法

if语句的基本语法如下:

if (条件) {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}

2. 示例

以下是一个简单的示例,判断一个数字是正数、负数还是零:

#include <stdio.h>

int main() {
int number;

printf("Enter a number: ");
scanf("%d", &number);

if (number > 0) {
printf("The number is positive.\n");
} else if (number < 0) {
printf("The number is negative.\n");
} else {
printf("The number is zero.\n");
}

return 0;
}

3. 多重条件

可以使用多个else if来处理多个条件。只有第一个满足的条件块会被执行。

示例:

#include <stdio.h>

int main() {
int score;

printf("Enter your score: ");
scanf("%d", &score);

if (score >= 90) {
printf("Grade: A\n");
} else if (score >= 80) {
printf("Grade: B\n");
} else if (score >= 70) {
printf("Grade: C\n");
} else if (score >= 60) {
printf("Grade: D\n");
} else {
printf("Grade: F\n");
}

return 0;
}

4. 嵌套 if 语句

可以在一个ifelse块内部嵌套另一个if语句,以实现更复杂的条件判断。

示例:

#include <stdio.h>

int main() {
int age;

printf("Enter your age: ");
scanf("%d", &age);

if (age >= 18) {
printf("You are an adult.\n");
if (age >= 65) {
printf("You are a senior citizen.\n");
}
} else {
printf("You are a minor.\n");
}

return 0;
}

5. 注意事项

  • 条件必须是布尔类型的表达式,结果为真(非零)或假(零)。
  • 大括号{}是可选的,当只需要执行单条语句时,可以省略,但建议始终使用,以提高代码可读性。

示例(省略大括号):

if (number > 0)
printf("Positive\n");
else
printf("Non-positive\n");

6. 逻辑表达式

可以在if条件中使用逻辑运算符(如&&||!)组合多个条件:

if (number > 0 && number < 100) {
printf("Number is between 1 and 99.\n");
}

总结

  • if-else语句用于根据条件执行不同代码块。
  • 可使用多个else if处理多重条件,并支持嵌套结构。
  • 注意条件表达式的布尔值及使用大括号来提高代码可读性。

在C语言中,switch语句用于根据变量的值选择执行不同的代码块。它通常用于替代多个if-else语句,使代码更简洁和易于维护。

1. 基本语法

switch语句的基本语法如下:

switch (表达式) {
case 常量1:
// 执行的代码块1
break;
case 常量2:
// 执行的代码块2
break;
// 可以有多个case
default:
// 默认情况下执行的代码
}

2. 示例

以下是一个示例,根据用户输入的数字输出对应的星期几:

#include <stdio.h>

int main() {
int day;

printf("Enter a number (1-7): ");
scanf("%d", &day);

switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("Invalid input! Please enter a number between 1 and 7.\n");
}

return 0;
}

3. break 语句

  • break语句用于终止switch语句的执行,跳出switch块。如果没有break,程序将继续执行下一个case的代码,这称为“贯穿”行为。

示例(没有break):

int num = 2;
switch (num) {
case 1:
printf("One\n");
case 2:
printf("Two\n");
case 3:
printf("Three\n");
default:
printf("Default\n");
}

输出:

Two
Three
Default

4. default 语句

  • default是可选的,用于处理所有未匹配的情况。如果没有case匹配,default中的代码将被执行。

5. 注意事项

  • switch语句的表达式通常是整型(int)或字符型(char)。
  • 在某些情况下,switch语句不支持浮点数。
  • 每个case后必须是一个常量表达式,不能是变量或计算结果。

6. 例外:多重匹配

可以为多个case共享同一代码块:

int grade;
switch (grade) {
case 90:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 97:
case 98:
case 99:
case 100:
printf("Grade: A\n");
break;
// 其他case...
}

总结

  • switch语句提供了一种简洁的方法来选择执行代码块,基于一个表达式的值。
  • 使用break语句来避免“贯穿”现象。
  • default用于处理所有未匹配的情况,适合处理多个常量的匹配。
编程实战1990公众号二�维码

10年软件开发经验,分享编程零基础入门教学文章视频,小项目从0到1开发迭代升级流程。 分享如何通过技术做出产品源源不断的进行盈利。关于我,学习更多编程知识。