今日目标
- 了解各种运算符及其用法。
- 掌握条件语句和循环语句的使用。
- 每日练习
目录
运算符
运算符用于执行各种操作,包括算术运算、逻辑运算、关系运算等。以下是C语言中的主要运算符。
1. 算术运算符
算术运算符用于执行基本的数学运算。
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法 | a + b |
- | 减法 | a - b |
* | 乘法 | a * b |
/ | 除法 | a / b |
% | 取模(余数) | a % b |
示例
int a = 10, b = 5;
int sum = a + b; // 15
int diff = a - b; // 5
int prod = a * b; // 50
int quot = a / b; // 2
int mod = a % b; // 0
2. 关系运算符
关系运算符用于比较两个值。
运算符 | 描述 | 示例 |
---|---|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
> | 大于 | a > b |
< | 小于 | a < b |
>= | 大于等于 | a >= b |
<= | 小于等于 | a <= b |
示例:
int x = 10, y = 20;
int isEqual = (x == y); // 0 (false)
int isNotEqual = (x != y); // 1 (true)
int isGreater = (x > y); // 0 (false)
int isLess = (x < y); // 1 (true)
int isGreaterOrEqual = (x >= y); // 0 (false)
int isLessOrEqual = (x <= y); // 1 (true)
3. 逻辑运算符
逻辑运算符用于执行逻辑操作。
运算符 | 描述 | 示例 |
---|---|---|
&& | 逻辑与 | a && b |
|| | 逻辑或 | a || b |
! | 逻辑非 | !a |
示例:
int a = 1, b = 0;
int andResult = (a && b); // 0 (false)
int orResult = (a || b); // 1 (true)
int notResult = !a; // 0 (false)
4. 位运算符
位运算符用于按位操作。
运算符 | 描述 | 示例 |
---|---|---|
& | 按位与 | a & b |
| | 按位或 | a | b |
^ | 按位异或 | a ^ b |
~ | 按位取反 | ~a |
<< | 左移 | a << 1 |
>> | 右移 | a >> 1 |
示例:
int a = 5, b = 3;
int andResult = a & b; // 1
int orResult = a | b; // 7
int xorResult = a ^ b; // 6
int notResult = ~a; // -6
int leftShift = a << 1; // 10
int rightShift = a >> 1; // 2
5. 赋值运算符
赋值运算符用于给变量赋值。
运算符 | 描述 | 示例 |
---|---|---|
= | 赋值 | a = b |
+= | 加并赋值 | a += b |
-= | 减并赋值 | a -= b |
*= | 乘并赋值 | a *= b |
/= | 除并赋值 | a /= b |
%= | 取模并赋值 | a %= b |
示例:
int a = 10;
a = 5;
printf("a = 5 -> a = %d\n", a); // 5
a += 5;
printf("a += 5 -> a = %d\n", a); // 10
a -= 5;
printf("a -= 5 -> a = %d\n", a); // 5
a *= 2;
printf("a *= 2 -> a = %d\n", a); // 10
a /= 2;
printf("a /= 2 -> a = %d\n", a); // 5
a %= 3;
printf("a %%= 3 -> a = %d\n", a); // 2
6. 其他运算符
其他常见运算符还包括条件运算符(三元运算符)、逗号运算符、指针运算符等。
运算符 | 描述 | 示例 |
---|---|---|
? : | 条件运算符 | condition ? a : b |
, | 逗号运算符 | a = (b, c) |
* | 指针运算符 | *ptr |
& | 取地址运算符 | &a |
条件运算符(三元运算符)
条件运算符用于根据一个条件表达式的真假来返回两个值中的一个。
可以用来替换if … else语句
int max = (a > b) ? a : b;
相当于
int max;if(a>b){max=a}else{max=b}
示例:
int a = 10, b = 20;
int max = (a > b) ? a : b; // 20
指针运算符
指针运算符用于处理指针。* 用于解引用指针,& 用于取变量的地址。
示例:
int a = 10;
int *p = &a; // p 是指向 a 的指针
printf("a = %d, *p = %d\n", a, *p); // 输出 "a = 10, *p = 10"
逗号运算符
逗号运算符用于在一个表达式中执行多个操作,从左到右依次执行,并返回最后一个操作的值。
示例:
int a, b;
a = (b = 3, b + 2); // b 先被赋值为 3,然后 a 被赋值为 b + 2,即 5
printf("a = %d, b = %d\n", a, b); // 输出 "a = 5, b = 3"
流程控制
流程控制语句用于控制程序的执行顺序,主要包括以下几种:
1. 条件语句
if 语句
一个if语句包含一个布尔表达式后跟一个或多个语句。
示例:
int a = 10;
if (a > 5) {
printf("a is greater than 5\n"); // 输出 "a is greater than 5"
}
if-else 语句
一个if语句可以跟着一个可选的else语句,当布尔表达式是假的,其执行。
示例:
int a = 10;
if (a > 5) {
printf("a is greater than 5\n");
} else {
printf("a is less than or equal to 5\n");
}
else-if 语句
可以在另一个if or else if语句中使用一个if or else if语句。
示例:
int a = 10;
if (a > 5) {
printf("a is greater than 5\n");
} else if (a == 5) {
printf("a is equal to 5\n");
} else {
printf("a is less than 5\n");
}
switch 语句
switch语句允许一个变量来针对值的列表平等进行测试。
以下规则适用于switch语句
- switch语句中使用的表达式必须具有整数或枚举类型,或者是类类型,其中该类具有到整数或枚举类型的单个转换函数。
- switch内可以有任意数量的case语句。每个case后面都跟要比较的值和一个冒号。
- case的常量表达式必须与switch中的变量具有相同的数据类型,并且必须是常量或文字。
- 当switch的变量等于case时,该case之后的语句将一直执行,直到到达break语句为止。
- 当到达break声明,switch终止,并且控制流程跳转到以下switch语句中的下一行。
- 并非每个case都需要break一下。直到达到switch最后的case如果没有switch的值出现控制流会落空。
- 一个switch语句可以有一个可选的默认情况下,它必须出现在switch的最后。当所有情况都不为真时,可以使用默认情况来执行任务。在默认情况下,无需break
示例:
int a = 2;
int a = 2;
switch (a) {
case 1:
printf("a is 1\n");
break;
case 2:
printf("a is 2\n"); // 输出 "a is 2"
break;
case 3:
printf("a is 3\n");
break;
default:
printf("a is not 1, 2, or 3\n");
}
2. 循环语句
for 循环
语法
for ( init; condition; increment ) {
statement(s);
}
这是“for”循环中的控制流程-
- init步骤首先被执行,并且只有一次。此步骤允许您声明和初始化任何循环控制变量。
- 接下来,测试condition。如果为true,则执行循环主体。如果为假,则不执行循环主体,并且控制流仅在“for”循环之后跳转到下一条语句。
- 在“for”循环的主体执行之后,控制流跳回到increment语句。该语句允许您更新任何循环控制变量。
- 现在将再次测试condition。如果为true,则循环执行并重复执行过程(循环主体,然后是递增步,然后再次是条件)。条件变为假之后,“for”循环终止。
示例:
for (int i = 0; i < 10; i++) {
printf("%d\n", i); // 输出 0 到 9
}
while 循环
语法
while(condition) {
statement(s);
}
需要注意的是,while循环可能根本不执行。当测试条件第一次并且结果为false时,将跳过循环主体,并执行while循环之后的第一条语句。
示例:
int i = 0;
while (i < 10) {
printf("%d\n", i); // 输出 0 到 9
i++;
}
do-while 循环
语法
do {
statement(s);
} while( condition );
与for和while循环不同,for和while循环在循环的顶部测试循环条件,而C语言中的do … while循环在循环的底部检查其条件。do…while循环类似于while循环,但事实上,它是保证执行至少一次。
示例:
int i = 0;
do {
printf("%d\n", i); // 输出 0 到 9
i++;
} while (i < 10);
嵌套循环
嵌套循环是指一个循环体内再包含一个或多个循环。常用于多维数据的处理,如二维数组等。
语法
for ( init; condition; increment ) {
for ( init; condition; increment ) {
statement(s);
}
statement(s);
}
示例
#include <stdio.h>
int main() {
for (int i = 1; i <= 3; i++) { // 外层循环
for (int j = 1; j <= 3; j++) { // 内层循环
printf("i = %d, j = %d\n", i, j);
}
}
return 0;
}
死循环
死循环(无限循环)是一个永远不会终止的循环。除非在循环体内部使用控制语句(如 break
或 return
)强制跳出循环,否则程序会一直运行下去。
示例:
使用 while
死循环:
#include <stdio.h>
int main() {
while (1) {
printf("This is an infinite loop.\n");
}
return 0; // 这行代码永远不会执行
}
使用 for
死循环:
#include <stdio.h>
int main() {
for (;;) {
printf("This is an infinite loop.\n");
}
return 0; // 这行代码永远不会执行
}
3. 跳转语句
break 语句
终止循环或switch语句,并在循环或switch后立即将执行的语句。
示例:
for (int i = 0; i < 5; i++) {
if (i == 3) {
break;
}
printf("i: %d\n", i);
}
continue 语句
使循环跳过其其余部分,并在重新进行迭代之前立即重新测试条件。
示例:
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue;
}
printf("i: %d\n", i);
}
return 语句
用于结束函数并返回一个值或者结束循环。
示例:
int sum(int a, int b) {
return a + b;
}
goto 语句
将控制权转移到带标签的语句。不常用,会影响代码阅读
示例:
#include <stdio.h>
int main () {
int a = 10;
LOOP:do {
if( a == 15) {
a = a + 1;
goto LOOP;
}
printf("value of a: %d\n", a);
a++;
}while( a < 20 );
return 0;
}
每日练习
- 编写一个程序,演示各种运算符的使用
#include <stdio.h>
int main() {
int a = 10, b = 5;
// 算术运算符
printf("a + b = %d\n", a + b); // 15
printf("a - b = %d\n", a - b); // 5
printf("a * b = %d\n", a * b); // 50
printf("a / b = %d\n", a / b); // 2
printf("a %% b = %d\n", a % b); // 0
// 关系运算符
printf("a == b = %d\n", a == b); // 0
printf("a != b = %d\n", a != b); // 1
printf("a > b = %d\n", a > b); // 1
printf("a < b = %d\n", a < b); // 0
printf("a >= b = %d\n", a >= b); // 1
printf("a <= b = %d\n", a <= b); // 0
// 逻辑运算符
int x = 1, y = 0;
printf("x && y = %d\n", x && y); // 0
printf("x || y = %d\n", x || y); // 1
printf("!x = %d\n", !x); // 0
// 位运算符
printf("a & b = %d\n", a & b); // 0
printf("a | b = %d\n", a | b); // 15
printf("a ^ b = %d\n", a ^ b); // 15
printf("~a = %d\n", ~a); // -11
printf("a << 1 = %d\n", a << 1); // 20
printf("a >> 1 = %d\n", a >> 1); // 5
// 赋值运算符
a += 5;
printf("a += 5 -> a = %d\n", a); // 15
a -= 5;
printf("a -= 5 -> a = %d\n", a); // 10
a *= 2;
printf("a *= 2 -> a = %d\n", a); // 20
a /= 2;
printf("a /= 2 -> a = %d\n", a); // 10
a %= 3;
printf("a %%= 3 -> a = %d\n", a); // 1
// 其他运算符
int max = (a > b) ? a : b;
printf("max = %d\n", max); // 10
return 0;
}
运行结果
a + b = 15
a - b = 5
a * b = 50
a / b = 2
a % b = 0
a == b = 0
a != b = 1
a > b = 1
a < b = 0
a >= b = 1
a <= b = 0
x && y = 0
x || y = 1
!x = 0
a & b = 0
a | b = 15
a ^ b = 15
~a = -11
a << 1 = 20
a >> 1 = 5
a += 5 -> a = 15
a -= 5 -> a = 10
a *= 2 -> a = 20
a /= 2 -> a = 10
a %= 3 -> a = 1
max = 5
- 编写一个程序,使用嵌套
for
循环打印九九乘法表。
#include <stdio.h>
int main() {
for (int i = 1; i <= 9; i++) { // 外层循环
for (int j = 1; j <= 9; j++) { // 内层循环
printf("%d * %d = %2d\t", i, j, i * j);
}
printf("\n");
}
return 0;
}
运行结果
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
标签:语句,示例,--,C语言,运算符,int,循环,printf
From: https://blog.csdn.net/2401_86274572/article/details/140869808