gpt4 book ai didi

C++ rand() 不适用于字符串数组

转载 作者:行者123 更新时间:2023-11-27 23:49:04 26 4
gpt4 key购买 nike

我正在创建一个允许用户输入 3 个名称(或他们想要的任何字符串)的小程序。然后程序应该显示所有三个字符串(这是有效的),然后它应该使用 rand() 函数随机显示三个字符串之一。这是功能不正常的部分。

#include <iostream>
#include <string>

using namespace std;

void display(string[], int);

const int SIZE = 3;

int main()
{
string names[SIZE];

for (int i = 0; i < SIZE; i++)
{
cout << i + 1 << ": ";
getline(cin, names[i]);
}

cout << endl;
display(names, SIZE);

int name = rand() % (2 + 1 - 0) + 0;
cout << names[name];

cin.get();

return 0;
}

void display(string nm[], int n)
{
int i = 0;

for (i; i < n; i++)
{
cout << "Name " << i + 1 << ": ";
cout << nm[i] << endl;
}
}

我之前有不同的设置,它给了我一个错误,但是在将它更改为现在的样子之后,它总是给我最后一个元素 [2]。

这是代码错误,还是只是 rand() 在同一系统上总是给出相同的输出?

最佳答案

在评论中进行了一些讨论后,很明显问题是我不是 seeding rand()功能。以下是部分未运行的代码,已更正。

(另外,作为旁注,要使用 time() 函数,必须包含 <ctime><time.h>。)

srand(time(NULL));
int name = rand() % 3;
cout << names[name];

(感谢 @manni66 指出包含过于复杂的计算以获得 rand() 的范围是没有用的,因为它必须是一个整数。

关于C++ rand() 不适用于字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48112992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com