10.31学习

时间:2024-11-01 07:04:01

一、while循环语句

在 C 语言中, while  循环语句是一种基本的控制流语句,用于在满足特定条件时重复执行一段代码。 while  循环的一般形式如下:

while (条件表达式) {

// 循环体

// 这里是在条件为真时需要执行的代码块

}

条件表达式:这是一个布尔表达式,它在每次循环开始前被评估。如果条件表达式的结果为真(非零值),则执行循环体内的代码块。如果条件表达式的结果为假(零值),则不执行循环体内的代码块,程序继续执行循环之后的代码。

示例 1:基本的  while  循环

#include <stdio.h>

 

int main() {

int i = 0;

 

while (i < 5) {

printf("%d ", i);

i++; // 增加 i 的值,以避免无限循环

}

 

return 0;

}

在这个示例中, while  循环将打印从 0 到 4 的数字。只要  i  小于 5,循环就会继续执行。

示例 2:使用  while  循环读取用户输入

#include <stdio.h>

 

int main() {

char ch;

printf("Enter characters, enter '#' to stop: ");

 

while ((ch = getchar()) != '#') {

putchar(ch); // 回显输入的字符

}

 

return 0;

}

在这个示例中,程序使用  while  循环读取用户输入的字符,直到用户输入  #  为止。每次读取一个字符,如果字符不是  # ,则将其打印出来。

注意事项

1. 避免无限循环:确保循环体中包含改变条件表达式结果的语句,否则可能会形成无限循环。

2. 初始化和更新:在循环开始前初始化循环控制变量,并在循环体中更新它。

3. 条件检查: while  循环仅在条件为真时执行循环体,因此确保条件表达式正确设置。

 while  循环是实现迭代和重复操作的强大工具,适用于那些需要在满足特定条件时重复执行代码的场景。

 

二、数组

在 C 语言中,数组是一种基本的数据结构,用于存储相同类型的多个元素。

定义数组

数组定义的一般形式如下:

类型名 数组名[数组大小];

类型名:数组中元素的数据类型,如  int 、 float 、 char  等。

数组名:数组的标识符,用于访问数组中的元素。

数组大小:数组可以存储的元素数量,必须是常量表达式。

例如,定义一个包含 10 个整数的数组:

int numbers[10];

初始化数组

数组可以在定义时进行初始化:

int numbers[] = {1, 2, 3, 4, 5};

如果已知数组的大小,也可以指定大小:

int numbers[5] = {1, 2, 3, 4, 5};

访问数组元素

数组元素通过索引访问,索引从 0 开始:

int firstElement = numbers[0];

遍历数组

使用循环结构遍历数组:

for (int i = 0; i < sizeof(numbers) / sizeof(numbers[0]); i++) {

printf("%d ", numbers[i]);

}

数组的大小

数组的大小可以用  sizeof  运算符获取:

int size = sizeof(numbers) / sizeof(numbers[0]);

多维数组

C 语言支持多维数组,定义形式如下:

int matrix[3][2]; // 3x2 的二维数组

指针和数组

数组名本身可以作为指向数组首元素的指针使用:

int *ptr = numbers; // ptr 指向数组 numbers 的第一个元素

字符串和字符数组

字符数组常用于处理字符串:

char str[] = "Hello, World!";

动态内存分配

可以使用  malloc  或  calloc  动态分配数组:

int *dynamicArray = (int *)malloc(sizeof(int) * 10);

使用动态分配的数组时,需要手动释放内存:

free(dynamicArray);

注意事项

1. 数组越界:访问数组时,确保索引在有效范围内,避免越界。

2. 内存泄漏:使用动态内存分配时,记得释放内存。

3. 性能:访问数组元素的时间复杂度为 O(1),但遍历数组可能需要 O(n) 的时间。

数组是 C 语言中处理同类数据集合的重要工具,掌握数组的使用对于编程至关重要。

 

三、for语句

 for  循环是 C 语言中常用的循环控制结构之一,它非常适合于那些需要执行固定次数的循环场景。

基本语法

 for  循环的基本语法如下:

for (初始化表达式; 条件表达式; 更新表达式) {

// 循环体

}

初始化表达式:在循环开始前执行,通常用于设置循环控制变量的初始值。

条件表达式:在每次循环迭代前评估,如果结果为真(非零),则执行循环体;如果结果为假(零),则退出循环。

更新表达式:在每次循环迭代后执行,通常用于更新循环控制变量的值。

示例

for (int i = 0; i < 10; i++) {

printf("%d ", i);

}

这个示例打印从 0 到 9 的数字。

省略成分

在  for  循环中,初始化表达式、条件表达式和更新表达式都可以省略:

int i = 0;

for (; i < 10; ) {

printf("%d ", i++);

}

这个示例与前面的示例等效,但它省略了初始化表达式,并且将更新表达式放在了循环体内部。

多变量操作

可以在  for  循环的初始化表达式或更新表达式中执行多个操作:

for (int i = 0, j = 10; i < 10; i++, j--) {

printf("i = %d, j = %d\n", i, j);

}

无限循环

通过提供一个始终为真的条件表达式, for  循环可以被用作无限循环:

for (;;) {

// 无限执行的代码

}

嵌套循环

 for  循环可以嵌套使用,创建多维循环:

for (int i = 0; i < 5; i++) {

for (int j = 0; j < 5; j++) {

printf("i = %d, j = %d\n", i, j);

}

}

 for  循环和数组

 for  循环经常与数组一起使用来遍历数组元素:

int array[] = {1, 2, 3, 4, 5};

for (int i = 0; i < sizeof(array) / sizeof(array[0]); i++) {

printf("%d ", array[i]);

}

注意事项

1. 避免在循环体内修改循环控制变量:这可能会导致不可预测的行为。

2. 确保循环有退出条件:避免创建无限循环。

3. 初始化和更新表达式的顺序:它们通常按照从左到右的顺序执行。