C语言——循环结构:while、do...while、for

while循环

基本结构

C语言中的while循环是一种基本的循环控制结构,它允许程序重复执行一段代码块,直到指定的条件不再满足为止。while循环的语法结构如下:

cpp 复制代码
while (condition) {  
    // 循环体  
    // 在这里编写要重复执行的代码  
}
  • condition 是循环继续执行的条件。在每次循环开始前,程序都会检查这个条件。如果条件为真(即,条件表达式的值为非零),则执行循环体内的代码块;如果条件为假(即,条件表达式的值为零),则跳过循环体,继续执行循环之后的代码。
  • 循环体是{}中的代码块,它包含了每次循环时都要执行的语句。
示例:打印1到10之间的整数
cpp 复制代码
#include <stdio.h>  
  
int main() {  
    int i = 1; // 初始化计数器   第一个表达式:条件的初始值
    while (i <= 10) { // 循环条件  第二个表达式:条件的临界值
        printf("%d ", i); // 打印当前值  
        i++; // 更新计数器,为下一次循环做准备  第三个表达式:条件发生变化
    }  
    return 0;  
}

输出将是:

cpp 复制代码
1 2 3 4 5 6 7 8 9 10
注意事项
  1. 无限循环 :如果条件始终为真,或者循环体内部没有更改条件以使其最终变为假,while循环将变成无限循环。这通常是一个错误,应当避免。

  2. 条件更新:确保在循环体内部更新条件表达式中使用的变量,以避免无限循环。

  3. 初始化:在循环开始前初始化所有在条件表达式中使用的变量。

  4. 循环控制语句 :可以使用break语句提前退出while循环,使用continue语句跳过循环体中剩余的代码,直接进入下一次循环的条件判断。

do...while循环:

基本结构:

C语言中的do...while循环是另一种循环控制结构,它与while循环类似,但有一个关键的区别:do...while循环至少会执行一次循环体内的代码,即使初始条件为假。这是因为do...while循环的条件检查是在循环体的末尾进行的,而不是在循环体的开始。

cpp 复制代码
do {  
    // 循环体  
    // 在这里编写要重复执行的代码  
} while (condition);
  • condition 是循环继续执行的条件。但是,与while循环不同,do...while循环首先执行循环体,然后再检查条件。如果条件为真(即,条件表达式的值为非零),则重复执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
示例:打印1到10之间的整数
cpp 复制代码
#include <stdio.h>  
  
int main() {  
    int i = 1; // 初始化计数器  
    do {  
        printf("%d ", i); // 打印当前值  
        i++; // 更新计数器  
    } while (i <= 10); // 循环条件  
    return 0;  
}

输出将是:

cpp 复制代码
1 2 3 4 5 6 7 8 9 10
注意事项
  • 至少执行一次 :由于do...while循环的特性,循环体内的代码至少会执行一次,无论条件是否满足。
  • 条件更新 :与while循环一样,确保在循环体内部更新条件表达式中使用的变量,以避免无限循环(尽管在这个特定结构中,即使条件永远不满足,循环体也至少会执行一次)。
  • 初始化:在循环开始前初始化所有在条件表达式中使用的变量。
  • 循环控制语句 :与while循环相同,可以使用break语句提前退出do...while循环,使用continue语句跳过循环体中剩余的代码,直接进入下一次循环的条件判断(但由于do...while循环至少执行一次,所以continue语句不会阻止循环体的首次执行)。

for循环

基本结构:

C语言中的for循环是一种非常强大且灵活的循环控制结构,它允许你指定初始化表达式、循环条件以及每次循环迭代结束时执行的更新表达式。for循环的语法结构如下:

cpp 复制代码
for (初始化表达式; 循环条件; 更新表达式) {  
    // 循环体  
    // 在这里编写要重复执行的代码  
}
  • 初始化表达式:在循环开始前执行,通常用于初始化一个或多个循环控制变量。它只执行一次。
  • 循环条件:在每次循环迭代开始前检查。如果条件为真(即,条件表达式的值为非零),则执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
  • 更新表达式:在每次循环迭代结束时执行,通常用于更新循环控制变量的值,以便在下一次迭代时重新评估循环条件。
示例:打印1到10之间的整数
cpp 复制代码
#include <stdio.h>  
  
int main() {  
    for (int i = 1; i <= 10; i++) {  
        printf("%d ", i);  
    }  
    return 0;  
}

输出将是:

cpp 复制代码
1 2 3 4 5 6 7 8 9 10

在这个例子中,i = 1是初始化表达式,它只执行一次,用于初始化循环控制变量ii <= 10是循环条件,它在每次迭代开始前检查。如果i的值小于或等于10,则执行循环体(即,打印i的值)。i++是更新表达式,它在每次迭代结束时执行,用于将i的值增加1。

注意事项
  • 初始化变量for循环的初始化表达式中声明的变量(如上面的int i = 1;)具有块作用域,这意味着它们只在for循环的块内部可见。
  • 空表达式 :初始化表达式、循环条件和更新表达式都可以为空(即,只包含分号;),但通常不推荐这样做,因为它可能会导致代码难以理解和维护。
  • 循环控制语句 :与whiledo...while循环一样,for循环中也可以使用breakcontinue语句来控制循环的流程。break语句用于立即退出循环,而continue语句用于跳过当前迭代中剩余的代码,直接进入下一次迭代的条件判断。

break跳出循环:

计算捐献总数并在数据达到10万之后结束计数

cpp 复制代码
#include<stdio.h>

int main()
{
	int numPerson;
	int dnoateMoney;
	int money = 0;
	
	for(numPerson = 1;numPerson <= 1000;numPerson++){
		printf("请输入你要捐献的金额:\n");
		scanf("%d",&dnoateMoney);
		money = money + dnoateMoney;
		if(money >= 100000){
			printf("已经捐献了%d元了,达到10万元\n",money);
			break;  
		}
	}
	printf("一共有%d个人捐献,平均每个人捐献了%f元\n",numPerson,(float)money/numPerson);
	return 0;
}

continue结束本次循环:

输出100---200中间能被3整除的数

cpp 复制代码
#include<stdio.h>

int main()
{
	int number;
	int times = 0;
	
	for(number = 100;number <= 200;number++){
		if(number %3 != 0){  //除3取余后不等于0,说明不能被3整除,跳出本次for循环,不进行输出
			continue;
		}
		times++;
		printf("%d\n",number);
	}
	printf("100-200中能被3整除的数有%d个\n",times);
	return 0;
}
相关推荐
萧鼎1 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸1 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农1 小时前
Python 继承、多态、封装、抽象
开发语言·python
^velpro^1 小时前
数据库连接池的创建
java·开发语言·数据库
秋の花1 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端1 小时前
第六章 7.0 LinkList
java·开发语言·网络
可峰科技1 小时前
斗破QT编程入门系列之二:认识Qt:编写一个HelloWorld程序(四星斗师)
开发语言·qt
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
面试鸭1 小时前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据2 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫