当前课程知识点:C语言程序设计 > 第6章 循环结构程序设计 > 6.2 for语句 > for语句
同学们大家好
本节我们来学习C语言中的循环语句for语句
实现循环结构时
除了可以用while语句和dowhile语句外
C语言还提供for语句实现循环
而且for语句更为灵活
不仅可以用于循环次数已经确定的情况
还可以用于循环次数不确定
而只给出循环结束条件的情况
它完全可以代替while语句
例如
求1+2+3+…+100的和
我们也可以用for语句实现
代码段如下
for语句的一般形式为
for (表达式1;表达式2;表达式3)
语句 3个表达式的主要作用是
表达式1
设置初始条件
只执行一次
可以为零个
一个或多个变量设置初值
表达式2
是循环条件表达式
用来判定是否继续循环
在每次执行循环体前先执行此表达式
决定是否继续执行循环
表达式3
作为循环的调整
例如使循环变量增值
它是在执行完循环体后才进行的
这样
for语句就可以理解为
for
(循环变量赋初值;循环条件;循环变量增值)
语句
例如
for
(i=1;i<=100;i++)
sum=sum+ i
其中的i=1
是给循环变量i设置初值为1
i<=100
是指定循环条件
当循环变量i的值小于或等于100时
循环继续执行
i++的作用
是使循环变量i的值不断变化
以便最终满足终止循环的条件
使循环结束
for语句的执行过程如图所示
1
先求解表达式1
2
求解表达式2
若此条件表达式的值为真
非0
则执行for语句中循环体
然后执 行第3步
若为假0则结束循环
转到第5步
3
求解表达式3
4
转回步骤2
继续执行
5
循环结束
执行for语句下面的一条语句
说明
1
for语句的一般形式
for (表达式1;表达式2;表达式3)
语句
可以改写为while循环的形式
表达式1
while (表达式2)
{ 语句 表达式3 } 二者等价
2
表达式1可以省略
即不设置初值
但表达式1后的分号不能省略
例如
for(i=1;i<=100;i++)
sum=sum+i
可以写成 i=1
for(;i<=100;i++)
sum= sum+ i
可以在for语句之前给循环变量赋以初值
3
表达式2也可以省略
即不用表达式2来作为循环条件表达式
不设置和检查循环的条件
例如
for(i=1;i++)
sum=sum+i
此时循环无终止地进行下去
也就是认为表达式2始终为真
它相当于 i=1
while(1){ sum=sum+ii++}
循环无终止地进行
i的值不断加大
sum的值也不断累加
4
表达式3也可以省略
但此时程序设计者应另外设法保证循环能正常结束
例如
for(i=1;i<=100;){
Sum=sum+i;i++}
在上面的for语句中只有表达式1和表达式2
而没有表达式3
i++的操作不放在表达式3的位置
而作为循环体的一部分
效果是一样的
都能使循环正常结束
如果在循环体中无此i++语句
则循环体无止境地执行下去
C语言的for语句使用十分灵活
变化多端
可以把循环体和一些与循环控制无关的操作
也作为表达式I或表达式3出现
对于这部分内容
同学们只须领会其精神实质
完全没有必要死记
注意
为了 for语句清晰
简洁可读性好
建议最好不要把与循环控制无关的内容
放到for语句中
本节的内容就讲到这里
同学们再见
-计算思维与计算机
--计算思维与计算机
--计算思维与计算机
--计算思维和计算机
-2.1 程序设计语言的发展及其特点和应用
--程序设计语言的特点及发展
- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤
--C语言程序的结构和编制步骤
-3.1 C语言的数据类型
--C语言的数据类型
--C语言的数据类型
-3.2 常量
--常量
--常量
-3.3 什么是变量
--什么是变量
--什么是变量
-3.4 如何进行算术运算
--如何进行算术运算
--如何进行算术运算
-3.5 赋值运算符和逗号运算符
--赋值运算符和逗号运算符
-3.6 数据类型转换
--数据类型转换
--数据类型转换
-4.1 格式化输出printf
--格式化输出
-4.2 格式化输入scanf及字符数据的非格式化输入输出
--格式化输入
-5.1 关系运算符和关系表达式
--关系运算符和关系表达式
-5.2 逻辑运算符和逻辑表达式
--逻辑运算符和逻辑表达式
-5.3 条件运算符和条件表达式
--条件运算符和条件表达式
-5.4 if语句
--if语句
--if语句
-5.5 switch语句
--switch语句
--switch语句
-6.1 while语句
--while语句
--while语句
--do-while语句
-6.2 for语句
--for语句
--for语句
-6.3 循环的嵌套
--循环的嵌套
--循环的嵌套
-6.4 break语句和continue语句
--break和continue语句
-7.1 一维数组的定义和引用
--一维数组的定义和引用
-7.2 一维数组的赋值
--一维数组的赋值
--一维数组的赋值
-7.3 二维数组的定义和引用
--二维数组的定义和引用
-7.4 二维数组的赋值
--二维数组的赋值
--二维数组的赋值
-7.5 字符串的本质
--字符串的本质
--字符串的本质
-7.6 字符串操作的常用函数
--字符串常用函数
-7.7 字符串数组
--字符串数组
--字符串数组
-8.1 函数概述
--函数概述
--函数概述
-8.2 有参函数
--有参函数
--有参函数
-8.3 函数参数的传递方式
--函数参数的传递方式
-8.4 变量的作用域和生存期
--变量的作用域和生存期
-8.5 变量的存储类型
--变量的存储类型
--变量的存储类型
-8.6 函数的嵌套和递归调用
--函数的嵌套和递归调用
-8.7 函数的作用域与封装
--函数的作用域与封装
-9.1 指针变量的概念(上)
--指针变量的概念(上)
-9.2 指针变量的概念(下)
--指针变量的概念(下)
-9.3 指向一维数组的指针变量
--指向一维数组的指针变量
-9.4 指向二维数组的指针变量(上)
--指向二维数组的指针变量(上)
-9.5 指向二维数组的指针变量(下)
--指向二维数组的指针变量(下)
-9.6 动态内存分配
--动态内存分配
--动态内存分配
-10.1 编译预处理
--编译预处理
-11.1 用户自己建立数据类型
--用户自己建立数据类型
-11.2 定义结构体类型变量
--定义结构体类型变量
-11.3 结构体变量的引用与初始化
-11.4 结构体数组
--结构体数组
--结构体数组
-11.5 指向结构体类型数据的指针
--指向结构体类型数据的指针
-12.1 文件的基本概念和文件指针
--文件的基本概念和文件指针
-12,2 文件的打开和关闭
--文件的打开和关闭
--文件的打开和关闭
-12.3 文本文件读写
--文本文件读写
--文本文件读写
-12.4 二进制文件读写
--二进制文件读写
--二进制文件读写