当前课程知识点:C++语言程序设计基础 >  第2章 C++简单程序设计(二) >  循环结构 >  for语句

返回《C++语言程序设计基础》慕课在线视频课程列表

for语句在线视频

for语句

for语句

l  for语句语法形式:

 

 

l  for语句的另一种形式:范围for语句:

    for  (声明:表达式)

        语句

 

例2-8:输入一个整数,求出它的所有因子

#include <iostream>

using namespace std;

int main() {

      int n;

      cout << "Enter a positive integer: ";

      cin >> n;

      cout << "Number  " << n << "   Factors  ";

      for (int k = 1; k <= n; k++)

        if (n % k == 0)

          cout << k << "  ";

  cout << endl;

  return 0;

}

 

运行结果1:

Enter a positive integer: 36

Number  36  Factors  1  2  3  4  6  9  12  18  36 

 

运行结果2:

Enter a positive integer: 7

Number  7   Factors  1  7  


下一节:嵌套的控制结构、其他控制语句

返回《C++语言程序设计基础》慕课在线视频列表

for语句课程教案、知识点、字幕

大家好

欢迎继续学习C++语言程序设计

这一节我来介绍for语句

for语句也是一个循环语句

那么它是C++语言中

功能最强的一个循环语句

通常我们用for语句

来处理循环次数已知的循环

除此而外呢

我们前面学过的while语句

do while语句

它们所解决的问题

也都可以转化为

由for语句来解决

那么for语句的特点

就是将循环控制变量的初始化

循环条件的判断

还有循环控制变量的增值

都放在循环头中

这样的可读性特别好 一目了然

下面一个例子呢

是从键盘输入一个整数

然后求出它的所有因子

我们看这个代码怎么实现

同学们肯定想到用循环 对吧

因为我们知道去求一个数的因子

那就从1开始数呗

1和它自己肯定是它的因子

然后2 3 4

一个个往上数

看谁能整除它

谁就是它的因子

这显然是一个循环的过程

我们前面讲了while循环

do while循环

大家会考虑

是否用这两个语句的哪一个

来解决这个问题呢

事实上在这个例题中我们引入

另外一个新的循环语句

for循环

我们来看代码

这个for循环是专门用来

处理循环次数已知的循环问题的

当然for循环的功能很强大

while循环
do while循环能解决的问题

用for循环也是能够解决的

只是说大多数时候呢

我们会选择用for循环

去做这种计数的循环

比如说在这个例题里面

我们看这个for语句

它后面这对括号里面有三个部分

第一个部分定义了一个k

并且初始化为1

这个是初始化的部分

第二个部分是一个控制条件

这里头的要求是k小于等于n

类似于while循环的控制条件

这里的k小于等于n呢

也是循环控制条件

当它为真的时候

for的循环体才会被执行

第三个部分是什么呢

是k自增1

k自增1的目的

是使得这个循环控制条件

能够有一个时刻变成假

也就是用这样的方式

来依次处理不同的数据

现在我们来看一下

这个for语句的执行流程

在这个例子里面

我还是用调试的办法给大家演示先按f10进入这个主函数中

单步执行

然后到这儿输入一个数

比如说我们输入一个36

好 我们看到n里面有这个36了

然后到for循环这儿来

执行这个for循环头之前我们看到

k里面还没有一个确定的值

是一个垃圾数据

因为它还没有被初始化

执行完了这个for循环头以后

k里面的值就是1了

那么这时候1

它当然是小于等于n的

所以这个k小于等于n

这个表达式它的值是真

看我们把鼠标指到这个地方

它可以显示它的值确实是true

所以进入这个循环体了

这个时候用1去除n

当然1可以整除任何数字

所以1是它的因子

输出这个k

我们看到这儿输出了1

然后光标停在这个地方

接着又进到循环头去

现在k进在循环又变成2了

还是小于等于n的

但是2能不能整除n呢 能够整除

所以2也是它的因子

好 这样我们一圈一圈这么转

看已经输出了1 2 3了

它们都是36的因子

当然接下来如果我们不想

一共转36圈

都这样单步地按F10这么去执行

希望它一下跳出这个循环体

那么怎么办呢

我们在循环体之外的一个地方

设一个断点

鼠标点一下这个红点

就是这个断点

这样我们可以按F5

它就把断点之前的内容

全部执行完 停到断点这儿

我们可以看一下

现在36的所有因子都输出来了

通过这个例子我们就看到了

for语句它是一个什么样的机制

现在我们来看

这个for语句的语法规定

for语句一共分这样几个部分

在它括号里面分三个部分

第一个部分是初始语句

在循环开始之前是先求解的

而且就求解这一次

一般来说

会在这里定义一个循环控制变量

给它一个初始化

中间这个表达式1呢

是一个逻辑表达式

它的值是布尔类型的

当它的值为真的时候

就会执行循环体

这跟while语句的

这个循环条件表达式是一样的

第三个部分这儿的表达式2

是在每次执行完了循环体以后

求解的

一般来说我们把循环变量的变化

放在这儿

比如说增值或者减1

或者说按更多的 不是1为步长

而是2 或更多的部长去变化

等等

总而言之

我们将需要变化的这种操作

放在表达式2里面

由于每次执行完循环体以后

这个表达式2会导致一些变量

发生变化

结果就使得再次判断

表达式1的时候

到某个时刻有可能为假

那就是循环结束的时机了

大家可以尝试

将原来我们用while循环

完成的例题改成用for循环

你看看是不是也可以完成

实际上for循环

是功能非常强大的一个循环

凡是可以用while循环完成的

也可以用for循环完成

for循环还有另外一种形式

我们看这个

另外一种形式的语法

这种形式简称范围for循环

那么这种形式主要用于

遍历一个容器中的序列

现在我们还没有学习容器类型

所以在后续章节中

我们学习容器类型以后

会给大家演示

for循环的另外一种语法形式

好 这一节就这些内容

C++语言程序设计基础课程列表:

第1章 绪论

-导学

--第1章导学

-计算机系统简介

--计算机系统简介

--计算机系统简介 测试题

-计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展 测试题

-面向对象的基本概念

--面向对象的基本概念

--面向对象的基本概念 测试题

-程序的开发过程

--程序的开发过程

--程序的开发过程 测试题

-信息的表示和储存

--计算机中的信息与存储单位

--计算机的数字系统

--数据的编码表示

--信息的表示和储存 测试题

-实验指导

--实验一:VS开发环境介绍

第2章 C++简单程序设计(一)

-导学

--第二章导学

-C++语言概述

--C++的特点和程序实例

--C++字符集和词法记号

--C++语言概述 测试题

-基本数据类型、常量、变量

--基本数据类型、常量、变量

--程序举例

--基本数据类型、常量、变量 测试题

-运算与表达式

--算术运算与赋值运算

--逗号运算、关系运算、逻辑运算和条件运算

--Sizeof运算、位运算

--运算优先级、类型转换

--运算与表达式 测试题

-实验二:简单程序设计(上)

--实验二:简单程序设计(上)

第2章 C++简单程序设计(二)

-数据的输入和输出

--数据的输入和输出

--数据的输入和输出 测试题

-选择结构

--if语句

--switch语句

--选择结构 测试题

-循环结构

--循环结构——while语句

--do-while语句

--for语句

--嵌套的控制结构、其他控制语句

--循环结构 测试题

-自定义类型

--自定义类型

--自定义类型

-第2章小结

--第二章小结

-实验二:C++简单程序设计(下)

--实验二C++简单程序设计(下)

第3章 函数

-导学

--导学

-函数定义

--函数定义

--函数定义 测试题

-函数调用

--函数调用(例3-1)

--例3-2

--例3-3

--例3-4

--例3-5

--例3-6

--函数调用 测试题

-嵌套与递归

--函数的嵌套调用(例3-7)

--函数的递归调用(例3-8)

--例3-9

--例3-10

--嵌套与递归 测试题

-函数的参数传递

--函数的参数传递

--函数的参数传递 测试题

-引用类型

--引用类型(例3-11)

--引用类型 测试题

-含有可变参数的函数

--含有可变参数的函数

--含有可变参数的函数 测试题

-内联函数

--内联函数(例3-14)

--内联函数 测试题

-constexpr函数

--constexpr函数

--CONSTEXPR函数课后习题

-带默认参数值的函数

--带默认参数值的函数

--默认参数值例(3-15)

--带默认参数值的函数 测试题

-函数重载

--函数重载(例3-16)

--函数重载 测试题

-C++系统函数

--C++系统函数(例3-17)

--C++系统函数习题

-第3章小结

--第三章小结

-实验三(上)函数的应用

--实验三(上)函数的应用

-实验三(下)函数的应用

--实验三(下)函数的应用

第4章 类与对象

-导学

--导学

-面向对象程序的基本特点

--面向对象程序的基本特点

--面向对象程序的基本特点 测试题

-类和对象

--类和对象的定义

--类和对象的程序举例

--类和对象 测试题

-构造函数

--构造函数基本概念

--构造函数例题(1)——例4-1

--构造函数例题(2)——例4-2

--委托构造函数

--复制构造函数

--复制构造函数调用举例

--构造函数 测试题

-析构函数

--析构函数

--析构函数 测试题

-类的组合

--类的组合

--类的组合程序举例

--前向引用声明

--类的组合 测试题

-UML简介

--UML简介

--UML简介课后习题

-结构体与联合体

--结构体(例4-7)

--联合体(例4-8)

--结构体与联合体 测试题

-枚举类

--枚举类

--枚举类 测试题

-第4章小结

--第四章小结

-实验四(上)

--实验四(上)

-实验四(下)

--实验四(下)

第5章 数据的共享与保护

-导学

--导学

-标识符的作用域与可见性

--标识符的作用域与可见性

--标识符的作用域与可见性 测试题

-对象的生存期

--对象的生存期

--对象的生存期 测试题

-类的静态成员

--静态数据成员(例5-4)

--静态函数成员(例5-5)

--类的静态成员 测试题

-类的友元

--类的友元(例5-6)

--类的友元 测试题

-共享数据的保护

--共享数据的保护(例5-7)

--共享数据的保护 测试题

-多文件结构和预编译命令

--多文件结构和预编译命令(例5-10)

--多文件结构和预编译命令 测试题

-第5章小结

--小结

-实验五

--实验五

第6章 数组、指针与字符串(一)

-导学

--导学

-数组的定义与初始化

--数组的定义与使用

--数组的储存与初始化

--一维数组应用举例

--数组的定义与初始化 测试题

-数组作为函数的参数

--数组作为函数参数(例6-2)

--数组作为函数的参数 测试题

-对象数组

--对象数组

--对象数组 测试题

-基于范围的for循环

--基于范围的for循环

-指针的定义和运算

--指针的概念、定义和指针运算

--指针的初始化和赋值

--指针的算术运算、关系运算

--指针的定义和运算 测试题

-综合实例

--综合实例

-实验六(上)

--实验六上

第6章 数组、指针与字符串(二)

-指针与数组

--用指针访问数组元素

--指针数组

--指针与数组 测试题

-指针与函数

--以指针作为函数参数

--指针类型的函数

--指向函数的指针

--指针与函数 测试题

-对象指针

--对象指针

--对象指针 测试题

-动态内存分配

--动态分配与释放内存

--申请和释放动态数组(一)

--申请和释放动态数组(二)

--动态内存分配 测试题

-智能指针

--智能指针

-vector对象

--vector对象

--vector对象 测试题

-对象复制与移动

--深层复制与浅层复制

--移动构造

--对象复制与移动 测试题

-字符串

--C风格字符串

--string类

--字符串 测试题

-第6章小结

--第六章小结

-综合实例

--综合实例

-实验六(下)

--实验六(下)

for语句笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。