作用:满足循环条件,执行循环语句
语法:do{循环语句}while{循环条件};
注意:与while的区别在于do while 会先执行一次循环语句,再判断循环条件。
示例:打印0-9的数字
#include<bits/stdc++.h>
using namespace std;
int main(){
int num=0;
do{
cout<<num<<endl;
num++;
}
while(num<10);
}
这样看来do while语句与while语句并无太大的区别,但如果我们把第七行处的num++移动到cout输出的前面,那么结果就会增加一个10;
#include<bits/stdc++.h>
using namespace std;
int main(){
int num=0;
do{
num++;//num++移动到前面,即先执行加操作
cout<<num<<endl;
}
while(num<10);
}
可以看出,do while语句是先执行循环体,然后才判断循环条件是否满足,即是判断下一轮的循环是否发生
练习案例:水仙花数
案例描述:水仙花数是指一个三位数,它的每个位上的数字的3次幂之和等于它本身
例如:1^3+5^3+3^3=153? ?
请利用do……while语句,求出所有3位数中的水仙花数。
思路:
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
//1,先打印所有三位数字
int num=100;
int a=0;//个位
int b=0;//十位
int c=0;//百位
do {
a=num%10;
b=num/10%10;
c=num/100;
if(a*a*a+b*b*b+c*c*c==num){
cout<<num<<endl;
}
num++;
}
while(num<1000);
}
此案例中的关键即是要找到三位数字个位,十位,百位三种数字与整数间的关系。
即个位=num%10
? ? 十位=num/10%10
? ? 百位=num%100? ?
此外,用while语句也可以实现上述要求
#include<bits/stdc++.h>
using namespace std;
int main(){
int num=100;
int a=0;//个位
int b=0;//十位
int c=0;//百位
while(num<1000){
a=num%10;
b=num/10%10;
c=num/100;
if(a*a*a+b*b*b+c*c*c==num){
cout<<num<<endl;
}
num++;
}
}
结果:153,370,371,407