1.whileループ
- フォーマット:
while(循环条件){
循环体;
}
- ループでは変数を制御することでループ回数を制御します。
ループの3要素:
ループ変数の初期値、
ループ変数の判定、
ループ変数の更新
例1:
#include <iostream>
using namespace std;
int main()
{
int i = 1;
while(i <= 10)
{
cout <<"小人本住在苏州的城边..\t第"<<i<<"遍\n";
i++;
}
return 0;
}
出力:
小人本住在苏州的城边.. 第1遍
小人本住在苏州的城边.. 第2遍
小人本住在苏州的城边.. 第3遍
小人本住在苏州的城边.. 第4遍
小人本住在苏州的城边.. 第5遍
小人本住在苏州的城边.. 第6遍
小人本住在苏州的城边.. 第7遍
小人本住在苏州的城边.. 第8遍
小人本住在苏州的城边.. 第9遍
小人本住在苏州的城边.. 第10遍
例2:
#include <iostream>
using namespace std;
int main()
{
//目的:使用循环计算1-100的和
int num=1;//循环变量的初值
int sum=0;
while(num<=100) //循环变量的判断
{
sum+=num;
num++;//循环变量的更新
}
cout<<sum<<endl;
return 0;
}
例3
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
//目的:输入密码,3次都输入错误退出登录
int i=1;
string password;
while(i<=3)
{
cout<<"请输入密码:"<<endl;
cin>>password;
if(password!="123456"&&i==3)
{
cout<<"3次密码输入错误,系统强制退出"<<endl;
exit(0);//0是错误码
}
else if(password=="123456")
{
break;
}
i++;
}
cout<<"登陆成功!"<<endl;
return 0;
}
演習:
1.
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int k=2;
int i=0;
while(k=1)
{
k=k-1;
cout<<"第"<<++i<<"次循环"<<endl;
}
return 0;
}
これは無限ループですk=1
代入演算で戻り値が 1 なので while(1) が実行されます 無限ループです。
2. ステートメントの出力が次のとおりであるかどうかを確認します。
int n=0;
while(n++<=2);
cout<<n;
答えは 4.
分析: n++<=2 なので、最後に n が入って n++ が実行されるときは n=2、つまり n=3;
最後に飛び出すときに判断することを忘れないでください。 <=2 ステートメント、この時点では n=3 は条件を満たしていませんが、それでも ++ ステートメント、つまり n=n+1=4 を実行する必要があります。
例:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
//使用循环模拟拳皇对战
int hp1=100;
int hp2=100;
int attack1=0;
int attack2=0;
int randNum;
srand(time(NULL));//更新随机种子
while(hp1>=0&&hp2>=0)
{
//玩家出招,可以采用随机数是奇数还是偶数决定谁先攻击
randNum=rand();
if(randNum % 2==1)
{
//随机产生5到15的随机数
attack1=(int)(5 + 10 *rand()/(RAND_MAX+1));
attack2=(int)(5 + 10 *rand()/(RAND_MAX+1));
hp2-=attack1;
hp1-=attack2;
}
else
{
attack2=(int)(5 + 10 *rand()/(RAND_MAX+1));
attack1=(int)(5 + 10 *rand()/(RAND_MAX+1));
hp1-=attack2;
hp2-=attack1;
}
}
cout<<"玩家1:"<<hp1<<endl;
cout<<"玩家2:"<<hp2<<endl;
return 0;
}