当前课程知识点:C++语言程序设计基础 > 第2章 C++简单程序设计(二) > 循环结构 > do-while语句
do-while语句
l do-while 语句的语法形式
do 语句 // 可以是复合语句,其中必须含有改变条件表达式值的语句。
while (表达式)
l 执行顺序
先执行循环体语句,后判断条件。
表达式为 true 时,继续执行循环体。
#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;
}
#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;
}
大家好
欢迎继续学习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语句
它先不判断表达式
至少执行一次循环体
每次循环体结束的时候
才判断表达式
这个就是它们俩的差别
将来写程序的时候
我们选用哪一种循环语句呢
那么就让你自己判断一下
你的算法本身
是要求首先判断条件
当条件成立的时候再执行循环
还是说可以不用判断条件
至少应该执行一次循环
你的问题解法是哪种算法
你就选用哪种循环语句
-导学
--第1章导学
-计算机系统简介
--计算机系统简介
--计算机系统简介 测试题
-计算机语言和程序设计方法的发展
--计算机语言和程序设计方法的发展 测试题
-面向对象的基本概念
--面向对象的基本概念 测试题
-程序的开发过程
--程序的开发过程
--程序的开发过程 测试题
-信息的表示和储存
--计算机的数字系统
--数据的编码表示
--信息的表示和储存 测试题
-实验指导
-导学
--第二章导学
-C++语言概述
--C++语言概述 测试题
-基本数据类型、常量、变量
--程序举例
--基本数据类型、常量、变量 测试题
-运算与表达式
--运算与表达式 测试题
-实验二:简单程序设计(上)
-数据的输入和输出
--数据的输入和输出
--数据的输入和输出 测试题
-选择结构
--if语句
--switch语句
--选择结构 测试题
-循环结构
--for语句
--循环结构 测试题
-自定义类型
--自定义类型
--自定义类型
-第2章小结
--第二章小结
-实验二:C++简单程序设计(下)
-导学
--导学
-函数定义
--函数定义
--函数定义 测试题
-函数调用
--例3-2
--例3-3
--例3-4
--例3-5
--例3-6
--函数调用 测试题
-嵌套与递归
--例3-9
--例3-10
--嵌套与递归 测试题
-函数的参数传递
--函数的参数传递
--函数的参数传递 测试题
-引用类型
--引用类型 测试题
-含有可变参数的函数
--含有可变参数的函数 测试题
-内联函数
--内联函数 测试题
-constexpr函数
--CONSTEXPR函数课后习题
-带默认参数值的函数
--带默认参数值的函数 测试题
-函数重载
--函数重载 测试题
-C++系统函数
--C++系统函数习题
-第3章小结
--第三章小结
-实验三(上)函数的应用
-实验三(下)函数的应用
-导学
--导学
-面向对象程序的基本特点
--面向对象程序的基本特点 测试题
-类和对象
--类和对象的定义
--类和对象 测试题
-构造函数
--构造函数基本概念
--委托构造函数
--复制构造函数
--构造函数 测试题
-析构函数
--析构函数
--析构函数 测试题
-类的组合
--类的组合
--类的组合程序举例
--前向引用声明
--类的组合 测试题
-UML简介
--UML简介
--UML简介课后习题
-结构体与联合体
--结构体与联合体 测试题
-枚举类
--枚举类
--枚举类 测试题
-第4章小结
--第四章小结
-实验四(上)
--实验四(上)
-实验四(下)
--实验四(下)
-导学
--导学
-标识符的作用域与可见性
--标识符的作用域与可见性 测试题
-对象的生存期
--对象的生存期
--对象的生存期 测试题
-类的静态成员
--类的静态成员 测试题
-类的友元
--类的友元 测试题
-共享数据的保护
--共享数据的保护 测试题
-多文件结构和预编译命令
--多文件结构和预编译命令 测试题
-第5章小结
--小结
-实验五
--实验五
-导学
--导学
-数组的定义与初始化
--数组的定义与使用
--一维数组应用举例
--数组的定义与初始化 测试题
-数组作为函数的参数
--数组作为函数的参数 测试题
-对象数组
--对象数组
--对象数组 测试题
-基于范围的for循环
-指针的定义和运算
--指针的定义和运算 测试题
-综合实例
--综合实例
-实验六(上)
--实验六上
-指针与数组
--指针数组
--指针与数组 测试题
-指针与函数
--指针类型的函数
--指向函数的指针
--指针与函数 测试题
-对象指针
--对象指针
--对象指针 测试题
-动态内存分配
--动态内存分配 测试题
-智能指针
--智能指针
-vector对象
--vector对象
--vector对象 测试题
-对象复制与移动
--移动构造
--对象复制与移动 测试题
-字符串
--C风格字符串
--string类
--字符串 测试题
-第6章小结
--第六章小结
-综合实例
--综合实例
-实验六(下)
--实验六(下)