当前课程知识点:C语言程序设计 > 第5章 循环结构 > 5.2 for语句 > 5.2 for语句.mp4
大家好
我是云南大学信息学院丁海燕老师
欢迎走进C语言程序设计课堂
今天我们讲解for语句
在C语言
提供的4种不同的循环语句中
for语句最简洁
最灵活
不仅可用于循环次数已经确定的情况
也可用于循环次数虽不确定
但给出了循环继续条件的情况
下面来看例5.3
for语句
用for循环求1+2+3+…100
流程图如图所示
{int n, sum=0; //
首先将累加器sum初始化为0
for(n=1; n<=100; n++)
sum += n; //
实现累加
printf输出结果
程序运行结果如下
sum=5050
for语句
不仅可以用于
循环次数已经确定的情况
还可以用于循环次数不确定
而只给出循环结束条件的情况
for语句完全可以代替while语句
下面程序循环输出1到100
for (i=1;i<=100;i++)
{ printf("%d ", i );
for语句的一般形式为for
(表达式1;表达式2;表达式3)
语句
表达式1
用来设置初始条件
只执行一次
可以为零个
一个或多个变量设置初值
表达式2
为循环条件表达式
用来判定是否继续循环
在每次执行循环体前
先执行此表达式
决定是否继续执行循环
表达式2一般是关系表达式
或逻辑表达式
但也可以是数值表达式
或字符表达式
只要其值为非0
就执行循环体
表达式3
作为循环的调整器
例如使循环变量增值
它是在执行完循环体后才进行的
for语句的执行过程如下
一
先求解表达式1
二
求解表达式2
若其值为真
执行循环体
然后执行下面第3步
若为假
则结束循环
转到第5步
三
求解表达式3
四
转回上面步骤2
继续执行
五
循环结束
执行for语句下面的一个语句
for语句的流程图和N-S结构图
如图所示
for(i=1;i<=100;i++)
sum=sum+i
等价于
i=1
while(i<=100)
{ sum=sum+i
i++
}
可见用for语句更简单、方便
for(表达式1;表达式2 ;表达式3)
语句
所有用 while 语句实现的循环
都可以用for 语句实现
等价于
表达式1;
while (表达式2)
{ 语句
表达式3
}
在for语句中
表达式1
2
3
当中的1个
2个或3个表达式
均可以省略
但分号不能省略
一
表达式1、2、3全省略
即for
( ; ; )
就等同于while (1)
会无限循环
也就是死循环
二
省略表达式1和表达式3
即
for
(;表达式2;)
就等同于while
( 表达式2 )
三
省略表达式2
即
for
(表达式1; ;表达式3)
就等同于
表达式1; while(1)
{…表达式3;}
注意
在省略某个表达式时
应在适当位置
进行循环控制的必要操作
以保证循环的正确执行
表达式1
可以是设置循环变量初值的
赋值表达式
也可以与循环变量无关的其他表达式
例如
for (sum=0 ; i<=100; i++)
sum=sum+i
此时表达式1 sum=0
与循环变量无关
表达式1和表达式3
可以是一个简单的表达式
也可以是逗号表达式
即包含一个以上简单表达式
中间用逗号分隔
例如
for(sum=0,i=1 ; i<=100; i++)
sum=sum+i
例如
for(i=0,j=100
; i<=j; i++,j-- )
k=i+j
下面分析以下两个例子
一
for(i=0;
(c=getchar())!=’ ′;
i+=c)
在表达式2中
先从终端接收一个字符赋给c
然后判断此赋值表达式的值
是否不等于’ ’换行符
如果不等于’ ’
就执行循环体
它的作用是不断输入字符
将它们的ASCII码相加
直到输入一个“换行”符为止
此for语句的循环体为空语句
把本来要在循环体内处理的内容
放在表达式3中
作用是一样的
可见for语句功能强
可以在表达式中
完成本来应在循环体内完成的操作
二
for( ; (c=getchar())!=’ ’; )
printf(″%c″,c);
for语句中只有表达式2
而无表达式1和表达式3
其作用
是每读入一个字符后
立即输出该字符
直到输入一个“换行”为止
下面熟悉几个循环语句
while (!x) x++;
当 x=0 时
执行循环体x++;
while ((c=getchar( )) != ' ') n=n+1;
n 称为计数器
作用是统计输入字符的个数
while (num++<=2)
printf("%d ",num);
循环体是空语句
退出循环后输出num的值
do x*=-3
while(x>5)
先执行循环体x*=-3
再判断条件(x>5)
for (n=0; n<26; n++) printf("%c ", n+'A')
作用是输出26个大写字母
for (sum=0, i=1; i<=100
sum=sum+i, i+=2)
作用是计算100以内的奇数和
几种循环语句的比较如下
while 和for先判断循环条件后
执行循环体
do-while语句先执行循环体后
判断循环条件
while语句多用于循环次数不定的情况
do-while语句多用于
至少要运行一次的情况
for语句多用于要赋初值
或循环次数固定的情况
好了
同学们
for语句我们就学到这儿
下节课再见
-1.1 C语言的发展和特点
--1.1自测题
-1.2 一个简单的C语言程序
--讨论单元
--源程序 例1.1 输出一行文字Hello,world!”
--源程序 例1.2 多个函数构成的程序,求两个整数中较大者
--1.2自测题
-1.3 程序、程序设计语言及C程序运行步骤
--讨论单元
--1.3 自测题
-第1章 自测题
-2.1 算法的概念与描述
--讨论单元
--2.1自测题
-2.2 简单算法举例、计算思维与结构化程序设计方法
--2.2 简单算法举例、计算思维与结构化程序设计方法.mp4
--讨论单元
--2.2 自测题
-第2章 自测题
-3.1 C语言程序的简单结构和标识符
--3.1自测题
-3.2 常量、变量与赋值
--讨论单元
--3.2 自测题
-3.3 算术、赋值、自增自减运算符
--3.3 自测题
-3.4 条件、逗号、取地址、求字节运算符以及各类数值型数据间的混合运算
--3.4 条件、逗号、取地址、求字节运算符以及各类数值型数据间的混合运算.mp4
--3.4 自测题
-3.5 输入输出举例与字符的输入输出
--源程序 例求一元二次方程的根。a、b、c由键盘输入。设b2-4ac>0
--源程序 例2. 从键盘输入BOY三个字符,然后把它们输出到屏幕
--3.5 自测题
-3.6 格式化输出printf函数
--3.6自测题
-3.7 格式化输入scanf函数
--讨论单元
--3.7 自测题
-3.8 C语言基本数据类型
--3.8 自测题
-C语言运算符与表达式自测题
-第3章 自测题
-4.1 关系、逻辑运算符和if语句
--讨论单元
--源程序 例4.2 输入两个实数,按代数值由小到大的顺序输出这两个数。
--4.1自测题
-4.2 switch语句
--讨论单元
--4.2自测题
-4.3 选择结构程序举例
--4.3 自测题
-第4章 自测题
-5.1 while和do…while语句
--讨论单元
--源程序 例5.1 用while语句求1+2+3+…+100
--源程序 例5.2 用do…while语句求1+2+3+…+100
--5.1自测题
-5.2 for语句
--5.2 自测题
-5.3 改变循环执行的状态及嵌套循环
--源程序 例5.5 输出100~200之间的不能被3整除的数。
--5.3 自测题
-5.4 循环结构程序举例1
--源程序 例1 按每行输出5个数的形式输出Fibonacci数列的前20项 。
--源程序 例2 判断输入的某个数m是否为素数。若是素数,输出“YES”,若不是,输出“NO”。
--源程序 例3 用牛顿迭代法求方程 2x3+4x2-7x-6=0 在x=1.5附近的根。
--源程序 例4. 求2~10000以内的完全数(一个数的因子(除了这个数本身)之和等于该数本身。)
--5.4 自测题
-5.5 循环结构程序举例2
--5.5自测题
-第5章 自测题
-6.1 一维数组的定义和引用
--讨论单元
--6.1自测题
-6.2 一维数组编程
--6.2 自测题
-6.3 二维数组的定义和引用
--6.3 自测题
-6.4 二维数组编程
--源程序 例2 将一个二维数组行和列的元素互换,存到另一个二维数组中。
--6.4 自测题
-6.5 字符数组的定义、初始化和输入输出
--讨论单元
--6.5 自测题
-6.6 字符串处理函数
--6.6 自测题
-6.7 字符数组编程
--6.7 自测题
-第6章 自测题
-7.1 函数概念以及怎样定义和调用函数
--源程序 例7.1
--7.1自测题
-7.2 函数调用时的数据传递、调用过程及函数返回值
--7.2 函数调用时的数据传递、调用过程及函数返回值.mp4
--讨论单元
--源程序 例7.2
--7.2 自测题
-7.3 对被调函数的声明和函数的嵌套调用
--源程序 例7.4
--7.3 自测题
-7.4 函数的递归调用
--源程序 例7.6
--源程序 例7.7
--7.4 自测题
-7.5 数组作为函数参数1
--讨论单元
--7.5 自测题
-7.6 数组作为函数参数2
--7.6 自测题
-7.7 局部与全局变量,内部与外部函数
--7.7 自测题
-7.8 变量的生存期与局部变量的存储方式
--7.8 自测题
-7.9 全局变量的存储类别
--7.9 自测题
-第7章 自测题
-8.1 指针概念、指针变量的定义和引用
--源程序 例8.1
--讨论单元
--8.1自测题
-8.2 指针变量作为函数参数
--讨论单元
--8.2 自测题
-8.3 数组元素的指针的运算以及通过指针引用数组元素
--8.3 数组元素的指针的运算以及通过指针引用数组元素.mp4
--8.3 自测题
-8.4 用数组名作函数参数
--8.4 自测题
-8.5 通过指针引用多维数组
--8.5 自测题
-8.6 通过指针引用字符串
--8.6 自测题
-8.7 字符指针作函数参数
--8.7 自测题
-8.8 指向函数的指针
--8.8 自测题
-8.9 返回指针值的函数
--源程序 截取子串
--8.9 自测题
-8.10 指针函数和多重指针
--8.10 自测题
-8.11 动态内存分配与指向它的指针变量
--讨论单元
--8.11 自测题
-第8章 自测题
-9.1 定义和使用结构体变量
--9.1自测题
-9.2 使用结构体数组
--讨论单元
--9.2 自测题
-9.3 结构体指针
--9.3 自测题
-第9章 自测题