C++做一个动态抽奖程序,输入40个名称,随机抽取幸运奖
时间: 2024-09-15 09:08:28 浏览: 51
创建一个C++动态抽奖程序可以分为以下几个步骤:
1. **包含必要的库**:
首先,我们需要包含 `<iostream>` 和 `<cstdlib>`,前者用于输入输出,后者提供随机数生成功能。
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 用于随机化元素
```
2. **定义数据结构**:
创建一个 `Person` 结构体或类来存储姓名,例如:
```cpp
struct Person {
std::string name;
};
```
3. **获取用户输入**:
使用 `std::vector<Person>` 来存储所有名字,通过循环读取40个输入:
```cpp
std::vector<Person> names;
for (int i = 0; i < 40; ++i) {
std::cout << "请输入第 " << i+1 << " 位参与者的姓名:";
std::string inputName;
std::cin >> inputName;
names.push_back({inputName});
}
```
4. **随机选择幸运奖**:
使用 `std::random_shuffle` 函数将名字数组打乱,然后取出第一个作为幸运奖:
```cpp
// 使用Mersenne Twister算法生成伪随机数
srand(time(0));
std::random_shuffle(names.begin(), names.end());
const int luckyIndex = 0;
Person winner = names[luckyIndex];
std::cout << "恭喜 " << winner.name << " 获得幸运奖!\n";
```
5. **运行程序**:
以上述代码为基础,组织成完整的主函数,并在控制台中运行程序。
完整示例代码如下:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct Person {
std::string name;
};
void main() {
std::vector<Person> names;
for (int i = 0; i < 40; ++i) {
std::cout << "请输入第 " << i+1 << " 位参与者的姓名:";
std::string inputName;
std::cin >> inputName;
names.push_back({inputName});
}
// 打乱并选择幸运奖
srand(time(0));
std::random_shuffle(names.begin(), names.end());
const int luckyIndex = 0;
Person winner = names[luckyIndex];
std::cout << "恭喜 " << winner.name << " 获得幸运奖!\n";
// 询问是否继续抽奖或退出
char continueChoice;
std::cout << "是否还有其他抽奖?请输入 'y' 继续,其他键退出:" << std::endl;
std::cin >> continueChoice;
if (continueChoice != 'y') {
return;
}
}
```
阅读全文