
C语言如何表达循环、使用for循环、使用while循环、使用do-while循环
在C语言中,循环结构是程序设计中一个非常重要的概念。for循环、while循环、do-while循环是C语言中常用的三种循环结构。下面将详细介绍这三种循环的用法,并通过具体示例进行解释。
一、for循环
for循环是C语言中最常用的一种循环结构,其语法形式为:
for (初始化; 条件; 增量) {
// 循环体
}
1.1 for循环的基本用法
for循环的基本用法包括三个部分:初始化、条件、增量。初始化用于设置循环变量的初始值;条件用于判断循环是否继续执行;增量用于更新循环变量的值。
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("%dn", i);
}
return 0;
}
在上面的例子中,for循环从i = 0开始,每次循环结束后i的值增加1,当i < 10时,循环继续执行。这样会输出0到9的数字。
1.2 for循环的高级用法
for循环不仅可以用于简单的计数循环,还可以用于更复杂的循环控制。例如,可以在for循环中嵌套另一个for循环,实现多重循环。
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 5; i++) {
for (j = 1; j <= i; j++) {
printf("*");
}
printf("n");
}
return 0;
}
这个例子会输出一个简单的三角形图案,每一行的星号数量等于当前行号。
二、while循环
while循环是另一种常用的循环结构,其语法形式为:
while (条件) {
// 循环体
}
2.1 while循环的基本用法
while循环只包含一个条件部分,当条件为真时,循环体被执行。
#include <stdio.h>
int main() {
int i = 0;
while (i < 10) {
printf("%dn", i);
i++;
}
return 0;
}
在这个例子中,变量i从0开始,每次循环结束后i的值增加1。当i < 10时,循环继续执行,这样会输出0到9的数字。
2.2 while循环的高级用法
while循环可以用于更复杂的循环控制,例如,可以在while循环中使用break语句提前退出循环。
#include <stdio.h>
int main() {
int i = 0;
while (1) { // 无限循环
if (i >= 10) {
break; // 退出循环
}
printf("%dn", i);
i++;
}
return 0;
}
在这个例子中,while循环的条件为1,表示无限循环。当i >= 10时,通过break语句退出循环。
三、do-while循环
do-while循环是一种先执行循环体后判断条件的循环结构,其语法形式为:
do {
// 循环体
} while (条件);
3.1 do-while循环的基本用法
do-while循环至少会执行一次循环体,然后判断条件是否继续执行循环。
#include <stdio.h>
int main() {
int i = 0;
do {
printf("%dn", i);
i++;
} while (i < 10);
return 0;
}
在这个例子中,变量i从0开始,每次循环结束后i的值增加1。当i < 10时,循环继续执行,这样会输出0到9的数字。
3.2 do-while循环的高级用法
do-while循环可以用于需要至少执行一次循环体的场合。例如,可以用于用户输入验证。
#include <stdio.h>
int main() {
int num;
do {
printf("Enter a number (0 to exit): ");
scanf("%d", &num);
printf("You entered: %dn", num);
} while (num != 0);
return 0;
}
在这个例子中,程序会提示用户输入一个数字,并输出用户输入的数字。当用户输入0时,循环结束。
四、循环控制语句
在C语言的循环结构中,还有一些控制语句,如break、continue等,用于更灵活地控制循环的执行。
4.1 break语句
break语句用于提前退出循环,不再执行后续的循环体。
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i == 5) {
break; // 提前退出循环
}
printf("%dn", i);
}
return 0;
}
在这个例子中,当i等于5时,break语句会提前退出循环,程序只会输出0到4的数字。
4.2 continue语句
continue语句用于跳过当前循环的剩余部分,直接进入下一次循环。
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过当前循环
}
printf("%dn", i);
}
return 0;
}
在这个例子中,当i为偶数时,continue语句会跳过当前循环,程序只会输出1, 3, 5, 7, 9等奇数。
五、循环嵌套
在实际编程中,循环嵌套是非常常见的,即在一个循环体内嵌套另一个循环。循环嵌套可以用于处理多维数组、绘制图形等复杂任务。
5.1 多维数组的循环嵌套
通过循环嵌套,可以方便地遍历多维数组。
#include <stdio.h>
int main() {
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("n");
}
return 0;
}
在这个例子中,通过两个for循环嵌套,遍历并输出了一个3×3的二维数组。
5.2 绘制图形的循环嵌套
循环嵌套可以用于绘制简单的图形,如矩形、三角形等。
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 5; i++) {
for (j = 1; j <= 5; j++) {
printf("*");
}
printf("n");
}
return 0;
}
在这个例子中,通过两个for循环嵌套,绘制了一个5×5的矩形图案。
六、循环的应用场景
循环结构在实际编程中有着广泛的应用,下面列举几个常见的应用场景。
6.1 数据处理
循环结构常用于批量处理数据,例如遍历数组、链表等数据结构。
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int i;
for (i = 0; i < 5; i++) {
printf("%dn", arr[i]);
}
return 0;
}
在这个例子中,通过for循环遍历数组并输出数组中的每个元素。
6.2 字符串处理
循环结构常用于字符串处理,例如统计字符串的长度、查找字符串中的字符等。
#include <stdio.h>
int main() {
char str[] = "Hello, world!";
int i = 0;
while (str[i] != '