# include & lt字符串& gt
# include & lttime.h & gt
# include & ltmath.h & gt
# include & lt地圖& gt
使用命名空間std
typedef映射& ltstring,int & gtStudendMap
int main(int argc,char *argv[])
{
StudendMap stus
字符串名稱;
int num
int count = 0;
while(count & lt;8)
{
cout & lt& lt“請根據向導輸入學生信息,按兩次ctrl+z結束輸入(必須至少輸入8個學生)\ n”< & lt;endl
while (1)
{
cout & lt& lt"請輸入學生"
CIN & gt;& gt姓名;
cout & lt& lt"請輸入學生"
CIN & gt;& gtnum
if (cin)
{
stus.insert(make_pair(name,num));
}
其他
{
打破;
}
}
}
int nums[6];//存儲哪個同學獲獎了,第0格壹等獎,第1格二等獎,以此類推。
srand((無符號)時間(空));/*隨機種子*/
for(int I = 0;我& lt6;)//找到6個不重復的數字。
{
int pos = rand()% num;//隨機生成壹個數字
for(int j = 0;j & lt我;J++)//確保編號不重復。
{
if (nums[j] == pos)
{
打破;
}
}
如果(j == i)
{
nums[I]= pos;
i++;
}
}
StudendMap::叠代器it = stus . begin();
int people _ num = 0;
int pos = 0;
cout & lt& lt“壹等獎的獲得者是:”
while(people _ num & lt;1)
{
if (pos == nums[0])
{
cout & lt& lt(*it)。first & lt& lt" " " & lt& lt(*it)。第二& lt& ltendl
people _ num++;
}
pos++;
it++;
}
it = stus . begin();
people _ num = 0;
pos = 0;
cout & lt& lt“二等獎的獲得者是:”
while(people _ num & lt;2)
{
if(pos = = nums[1]| | pos = = nums[2])
{
cout & lt& lt(*it)。first & lt& lt" " " & lt& lt(*it)。第二& lt& ltendl
people _ num++;
}
pos++;
it++;
}
it = stus . begin();
people _ num = 0;
pos = 0;
cout & lt& lt“三等獎的獲得者是:”
while(people _ num & lt;3)
{
if(pos = = nums[3]| | pos = = nums[4]| | pos = = nums[5])
{
cout & lt& lt(*it)。first & lt& lt" " " & lt& lt(*it)。第二& lt& ltendl
people _ num++;
}
pos++;
it++;
}
返回0;
}