作用:满足循环条件,执行循环语句
语法: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