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

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

do-while语句在线视频

do-while语句

do-while语句

l  do-while 语句的语法形式

do   语句     // 可以是复合语句,其中必须含有改变条件表达式值的语句。

while (表达式)

l  执行顺序

先执行循环体语句,后判断条件。
表达式为 true 时,继续执行循环体。

 

例2-6:输入一个数,将各位数字翻转后输出

#include <iostream>

using namespace std;

int main() {

      int n, right_digit, newnum = 0;

      cout << "Enter the number: ";

      cin >> n;

      cout << "The number in reverse order is  ";

      do {

           right_digit = n % 10;

           cout << right_digit;

           n /= 10;  /*相当于n=n/10*/

      } while (n != 0);

    cout << endl;

      return 0;

}

 

2-7do-while语句编程求自然数1~10之和

#include <iostream>

using namespace std;

int main() {

      int i = 1, sum = 0;

      do {

           sum += i;

           i++;

      } while (i <= 10);

      cout << "sum = " << sum << endl;

      return 0;

}

 

对比下面的程序


程序1:

#include <iostream>

using namespace std;

int main() {

  int i, sum = 0;

  cin >> i;

  while (i <= 10) {

    sum += i;

    i++;

  }

  cout<< "sum= " << sum

       << endl;

  return 0;

}

程序2:

#include <iostream>

using namespace std;

int main() {

  int i, sum = 0;

  cin >> i;

  do {

    sum += i;

    i++;

  } while (i <= 10)

  cout << "sum=" << sum

       << endl;

  return 0;

}

 


下一节:for语句

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

do-while语句课程教案、知识点、字幕

大家好

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

这一节

我给大家介绍do while语句

do while 语句 也是一个循环语句

它跟我们前面讲过的while语句

很相象 但是又有不同点

我们看这个关键字先是do

然后是while

那么意思就是说

我先做第一次循环

不管条件如何

第一次循环先做完

然后判断我还进入下一次循环吗

那么这样一个逻辑呢

我们就用do while语句来实现

接下来呢

我们详细来看do while语句

是怎么用的

现在我们来看这样一个例子

从键盘输入一个数

然后将其反转以后输出

我们看这个代码如何实现

为了接收这个键盘输入的数

我们当然要定一个变量

然后将输入的数据

存到这个变量里面

我们定义一个n

用来接收键盘的输入

可能同学们想到

有各种各样的办法

这里给出一个比较简单的办法

就是不断地除以10取余

看看这个程序的主体部分

是一个do while语句

do while是一个什么样的语句呢

看到了while

它跟我们以前学的while

是不是有什么类似的地方呢

的确这也是一个循环语句

只是前面先出现一个do

在整个循环体结束以后

才有个while

也就是首先它要执行一遍循环体

然后再判断循环条件

是否依然为真 是否依然成立

如果循环条件依然成立的话

再继续执行下一次循环

那么具体到这个问题呢

我们看输入一个数

不管你输入的是一个什么数

要你反转输出

那总归要执行一次吧

即使你输入的是一个个位数

就一位

那反转输出还是它自己

也要输出一个吧

所以这种问题是无论如何

循环体都要执行一次的

所以我们来看

在这个do后面的循环体中呢

将n除以10

把余数放在right_digit里面

那就是它存下的是当前

最右边的那一个位

然后输出这一位

我们不是要求反转输出吗

就输出这一位

输出完了以后呢

将n除以10 取它的商

取它的整数商

这个时候判断n是否已经等于0了

如果输出一个最右的位数以后

除以10得到的商数已经是0了

就说明到此为止

全部该输的位数都输出完了

可以结束了

如果除以10得到的商数不是0

就说明还有位数没输出完

所以回过头去继续循环

再一次除以10 输出它的余数

再次把当前的n除以10

只取它的商数

然后判断商是否为0

所以从这个执行过程呢

大家可以看到

它跟while语句是很像的

只不过它的差别在于

先执行一次循环体

再判断循环条件

而while语句是首先要判断

是否满足循环条件

满足的话才进行循环

现在我们来看这个do while语句

它的语法形式

do之后是一个语句

可以是单条语句

也可以是

大括号括起来的复合语句

然后while里面是一个表达式

这个表达式为真的时候

就继续进行下一次循环

如果表达式为假

整个循环就结束

现在我们用do while语句

也来实现一下前面这个

求1到10之和的这个例子

我们看循环体

仍然是将i累加到sum上去

然后i自己增1

只不过是至少执行一次循环

然后再判断是否依然i小于等于10

如果i依然小于等于10的话

再进行下一次循环

从这道例题的效果看

好象用do while和while

效果是一样的

大家可以运行验证一下

看看效果是不是确实一样

但是do while和while

当然它们的效果在一些其他时候

是有差别的

不然的话也不会设计两条语句

来实现同样的功能啊

下面我们看看

这两个程序的对比

左边这个程序用的是while

右边这个程序用的是do while

都是从键盘输入一个i值

但是这一回呢

是计算从i到10的和

要求i小于等于10

那我们对比一下两边程序的差别

如果你输入的这个i

本身是一个小于等于10的数据

那左边 右边

两个程序的运行结果

应该是一样的

如果你输入的这个i

超过了10 比如说11或者18

那左边 右边两边的程序

效果就不一样了

当i大于10的时候

左边这个程序

一次循环都不会执行

而i大于10的时候呢

右边这个程序也会执行一次循环

因为右边这个程序

是do while语句

它先不判断表达式

至少执行一次循环体

每次循环体结束的时候

才判断表达式

这个就是它们俩的差别

将来写程序的时候

我们选用哪一种循环语句呢

那么就让你自己判断一下

你的算法本身

是要求首先判断条件

当条件成立的时候再执行循环

还是说可以不用判断条件

至少应该执行一次循环

你的问题解法是哪种算法

你就选用哪种循环语句

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章小结

--第六章小结

-综合实例

--综合实例

-实验六(下)

--实验六(下)

do-while语句笔记与讨论

也许你还感兴趣的课程:

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