在 C 语言中,循环具有重要的意义和作用,主要体现在以下几个方面:
(指针,算法方面的相关知识对初学循环语句尽可能先不进行了解)
一、重复执行代码
int arr[] = {1, 2, 3, 4, 5};
int sum = 0;
int length = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < length; i++) {
sum += arr[i];
}
FILE *fp;
char ch;
int lineCount = 0;
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Error opening file.\n");
return 1;
}
while ((ch = fgetc(fp))!= EOF) {
if (ch == '\n') {
lineCount++;
}
}
fclose(fp);
二、控制程序流程
while
循环根据用户输入的数字进行不同的操作,直到用户输入特定的退出值: int num;
do {
printf("Enter a number (enter 0 to exit): ");
scanf("%d", &num);
// 根据 num 的值进行不同的处理
} while (num!= 0);
while
循环,直到到达链表的末尾: struct Node {
int data;
struct Node *next;
};
struct Node *head = NULL;
// 假设已经创建了链表
struct Node *current = head;
while (current!= NULL) {
// 对当前节点进行操作
current = current->next;
}
三、实现复杂算法
int arr[] = {5, 3, 8, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 使用循环计算阶乘
int factorial(int n) {
int result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
(C语言三大循环语句 while,for,do.while)
while (条件表达式) {循环体}
以下是一个使用while
循环计算 1 到 10 的和的例子:
#include
int main() {
int sum = 0;
int i = 1;
while (i <= 10) {
sum += i;
i++;
}
printf("The sum of 1 to 10 is %d\n", sum);
return 0;
}
在这个例子中,首先初始化变量i
为 1,然后在while
循环中,只要i
小于等于 10,就将i
累加到sum
中,并将i
的值增加 1。当i
大于 10 时,循环结束。
int num;
while ((scanf("%d", &num) == 1) && (num!= 0)) {
// 对输入的数字进行处理
}
while
循环结合文件操作函数来实现: FILE *fp;
char ch;
fp = fopen("myfile.txt", "r");
if (fp == NULL) {
printf("Error opening file.\n");
return 1;
}
while ((ch = fgetc(fp))!= EOF) {
// 处理读取到的字符
}
fclose(fp);
for (初始化表达式; 条件表达式; 更新表达式) {循环体}
以下是一个使用for
循环输出数字 1 到 5 的例子:
#include
int main() {
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
return 0;
}
for
循环非常方便。例如遍历一个具有固定长度的数组: int arr[] = {1, 2, 3, 4, 5};
int length = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
for
循环可以嵌套使用,实现复杂的算法和数据结构操作。例如生成二维数组的乘法表: for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
printf("%d\t", i * j);
}
printf("\n");
}
do {循环体} while (条件表达式);
以下是一个使用do-while
循环输出数字 1 到 5 的例子:
#include
int main() {
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 5);
return 0;
}
do-while
循环非常有用。例如,在用户输入验证的场景中,如果要求用户必须输入一个有效的值,那么可以使用do-while
循环来确保用户至少输入一次,并且在输入无效时继续提示用户输入,直到输入有效为止。 int num;
do {
printf("Enter a positive number: ");
scanf("%d", &num);
} while (num <= 0);
while
循环类似,do-while
循环也可以用于处理不确定次数的循环,但是由于它先执行循环体,所以在某些情况下更加灵活。例如,从文件中读取数据,直到文件末尾,可以使用do-while
循环来确保至少读取一次数据,然后在每次读取后判断是否到达文件末尾。 FILE *fp;
char ch;
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Error opening file.\n");
return 1;
}
do {
ch = fgetc(fp);
// 处理读取到的字符
} while (ch!= EOF);
fclose(fp);
条件判断的位置:
while
循环和for
循环不同。因此,在编写do-while
循环时,要确保在循环体中对影响条件表达式的变量进行正确的更新,以避免出现无限循环。循环的退出条件:
for
循环:
for (初始化表达式; 条件表达式; 更新表达式) {循环体}
。while
循环:
while (条件表达式) {循环体}
。do-while
循环:
do {循环体} while (条件表达式);
。for
循环:
while
循环:
do-while
循环:
for
循环:
while
循环:
do-while
循环:
for
循环:
while
循环:
do-while
循环: