C语言中如何进行循环
在C语言中,进行循环的主要方法有三种:for循环、while循环、do-while循环。其中,for循环适用于已知循环次数的情况。例如,如果我们需要遍历一个数组,for循环是最常见的选择。
一、FOR循环
1、基本语法
for循环的基本语法如下:
for (初始化; 条件; 增量/减量) {
// 循环体
}
初始化语句在循环开始前执行一次,条件语句在每次循环开始时判断,如果条件为真,执行循环体,否则退出循环。增量/减量语句在每次循环体执行完毕后执行。
2、示例分析
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("当前值为: %dn", i);
}
return 0;
}
在这个示例中,初始化语句为 i = 0
,条件语句为 i < 10
,增量语句为 i++
。程序将从0到9打印出当前值。
3、嵌套循环
for循环可以嵌套使用,用于处理多维数组或复杂的迭代操作:
#include <stdio.h>
int main() {
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("i=%d, j=%dn", i, j);
}
}
return 0;
}
在这个示例中,外层循环每次执行一次,内层循环执行三次,因此打印出9组i和j的组合。
二、WHILE循环
1、基本语法
while循环的基本语法如下:
while (条件) {
// 循环体
}
在每次循环开始时,先判断条件语句,如果为真,则执行循环体,否则退出循环。
2、示例分析
#include <stdio.h>
int main() {
int i = 0;
while (i < 10) {
printf("当前值为: %dn", i);
i++;
}
return 0;
}
在这个示例中,条件语句为 i < 10
。程序将从0到9打印出当前值,每次循环后i增加1。
3、无限循环
while循环可以用于创建无限循环,直到满足某个条件:
#include <stdio.h>
int main() {
int i = 0;
while (1) {
printf("当前值为: %dn", i);
i++;
if (i >= 10) {
break;
}
}
return 0;
}
在这个示例中,条件语句为 1
,表示始终为真,形成无限循环。通过if
语句和break
来退出循环。
三、DO-WHILE循环
1、基本语法
do-while循环的基本语法如下:
do {
// 循环体
} while (条件);
do-while循环在每次循环结束时判断条件语句,如果为真,则继续执行循环体,否则退出循环。
2、示例分析
#include <stdio.h>
int main() {
int i = 0;
do {
printf("当前值为: %dn", i);
i++;
} while (i < 10);
return 0;
}
在这个示例中,条件语句为 i < 10
。程序将从0到9打印出当前值,每次循环后i增加1。
3、至少执行一次
与while循环不同,do-while循环在条件判断之前至少执行一次循环体:
#include <stdio.h>
int main() {
int i = 10;
do {
printf("当前值为: %dn", i);
i++;
} while (i < 10);
return 0;
}
在这个示例中,即使条件 i < 10
为假,循环体仍然会执行一次,打印出 i = 10
。
四、循环优化
1、减少不必要的计算
在循环内部避免不必要的计算可以提高效率。例如,将不变的计算移到循环外部:
#include <stdio.h>
int main() {
int n = 100;
int i, sum = 0;
int limit = n / 2; // 移动计算到循环外部
for (i = 0; i < limit; i++) {
sum += i;
}
printf("总和为: %dn", sum);
return 0;
}
2、使用指针
在处理数组时,使用指针代替数组下标可以提高效率:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *p;
for (p = arr; p < arr + 5; p++) {
printf("当前值为: %dn", *p);
}
return 0;
}
3、提前终止循环
在满足特定条件时,提前退出循环可以节省时间:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i == 5) {
break;
}
printf("当前值为: %dn", i);
}
return 0;
}
五、循环控制语句
1、break语句
用于立即退出循环,不再执行循环体和条件判断:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i == 5) {
break;
}
printf("当前值为: %dn", i);
}
return 0;
}
2、continue语句
用于跳过当前循环的剩余部分,直接进行下一次循环的条件判断:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
printf("当前值为: %dn", i);
}
return 0;
}
六、循环与数组
1、遍历数组
使用for循环遍历数组是最常见的操作:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int i;
for (i = 0; i < 5; i++) {
printf("当前值为: %dn", arr[i]);
}
return 0;
}
2、多维数组
多维数组需要嵌套循环来遍历:
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("当前值为: %dn", arr[i][j]);
}
}
return 0;
}
七、循环与指针
1、指针遍历数组
使用指针遍历数组可以提高效率:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *p;
for (p = arr; p < arr + 5; p++) {
printf("当前值为: %dn", *p);
}
return 0;
}
2、指针与多维数组
指针也可以用于遍历多维数组:
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*p)[3];
for (p = arr; p < arr + 2; p++) {
for (int *q = *p; q < *p + 3; q++) {
printf("当前值为: %dn", *q);
}
}
return 0;
}
八、循环与字符串
1、遍历字符串
字符串可以看作字符数组,用循环遍历每个字符:
#include <stdio.h>
int main() {
char str[] = "Hello, World!";
int i;
for (i = 0; str[i] != '