目录
一,循环语句
在 C 语言中,主要有三种循环语句:
for 循环
while 循环
do-while 循环
1. for 循环的一般形式为:
for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体
}
例如:使用 for 循环从 0 打印到 4
for (int i = 0; i < 5; i++) { //首先初始化 i 为 0 ,然后判断 i < 5 这个条件,如果条件为真,
printf("%d ", i);
} //就执行循环体中的 printf("%d ", i); 语句,打印出当前 i 的值
//这段代码的输出结果是: 0 1 2 3 4
2. while 循环的一般形式为:
while (条件表达式) {
// 循环体
}
例如: 使用 while 循环从 0 打印到 4
int j = 0;
while (j < 5) {
printf("%d ", j);
j++;
}
//这段代码的输出结果是: 0 1 2 3 4
3. do-while 循环的一般形式为:
do {
// 循环体
} while (条件表达式);
例如:使用 do-while 循环来实现从 0 打印到 4
int k = 0;
do {
printf("%d ", k); //先执行一次循环体,然后再判断条件
k++;
} while (k < 5);
//这段代码的输出结果是: 0 1 2 3 4
二,数组
在 C 语言中,数组是一组相同类型元素的有序集合。
声明、初始化和使用一个整数数组:
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50}; // 声明并初始化一个包含 5 个整数类型的数组
for (int i = 0; i < 5; i++) { // 遍历数组并打印每个元素
printf("%d ", arr[i]);
}
return 0;
}
数组的下标从 0 开始,到数组长度减 1 结束。
可以通过下标来访问和修改数组中的元素。
例:
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50};
// 访问数组元素
printf("第一个元素是:%d\n", arr[0]);
printf("第三个元素是:%d\n", arr[2]);
// 修改数组元素
arr[1] = 25;
arr[4] = 55;
// 打印修改后的数组
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
三,操作符
在 C 语言中,常见的操作符包括以下几类:
1. 算术运算符: + (加法)、 - (减法)、 * (乘法)、 / (除法)、 % (取余)
#include <stdio.h>
int main() {
int a = 5, b = 3;
// 算术运算符
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
printf("a %% b = %d\n", a % b); // 注意,在 printf 中,% 要写成 %%
return 0;
}
2. 关系运算符: == (等于)、 != (不等于)、 > (大于)、 < (小于)、 >= (大于等于)、 <= (小于等于)
#include <stdio.h>
int main() {
int a = 5, b = 3;
// 关系运算符
printf("a == b: %d\n", a == b);
printf("a!= b: %d\n", a!= b);
printf("a > b: %d\n", a > b);
return 0;
}
3. 逻辑运算符: && (逻辑与)、 || (逻辑或)、 ! (逻辑非)
#include <stdio.h>
int main() {
int a = 5, b = 3;
// 逻辑运算符
printf("(a > 0 && b > 0): %d\n", (a > 0 && b > 0));
printf("(a > 0 || b < 0): %d\n", (a > 0 || b < 0));
return 0;
}
4. 位运算符:
1. & (与):如果两个相应的二进制位都为 1,则结果位为 1,否则为 0。
例如: 5 & 3 ( 5 的二进制为 0101 , 3 的二进制为 0011 ),结果为 0001 ,即 1 。
2. | (或):如果两个相应的二进制位至少有一个为 1,则结果位为 1,否则为 0。
例如: 5 | 3 结果为 0111 ,即 7 。
3. ^ (异或):如果两个相应的二进制位不同,则结果位为 1,否则为 0。
例如: 5 ^ 3 结果为 0110 ,即 6 。
4. ~ (取反):将每个二进制位取反,即 1 变为 0,0 变为 1。
例如: ~5 ( 5 的二进制为 0101 ),结果为 1010 ,即 -6 (在有符号整数中)。
5. << (左移):将所有二进制位向左移动指定的位数,右边补 0。
例如: 5 << 2 ( 5 的二进制为 0101 ),结果为 20 (二进制为 10100 )。
6. >> (右移):对于有符号数,如果是算术右移,左边补符号位;如果是逻辑右移,左边补 0。对于无符号数,总是逻辑右移,左边补 0。
例如: 5 >> 1 ( 5 的二进制为 0101 ),如果是算术右移,结果为 0010 ,即 2 ;如果是逻辑右移,结果也为 2 。
上面涉及到一些数(例:5,3,6,7)它们是如何转为二进制的?
如下:
5. 赋值运算符: = 、 += 、 -= 、 *= 、 /= 、 %= 等
#include <stdio.h>
int main() {
int a = 5, b = 3;
// 赋值运算符
a += b; // 相当于 a = a + b
printf("a after a += b: %d\n", a);
return 0;
}
6. 自增自减运算符: ++ (自增)、 -- (自减)
#include <stdio.h>
int main() {
int a = 5, b = 3;
// 自增自减运算符
int c = 5;
printf("c++: %d\n", c++); // 先使用 c 的值,然后 c 增加 1
printf("++c: %d\n", ++c); // c 先增加 1,然后使用 c 的值
return 0;
}