有人可以帮我吗?

时间:2019-10-22 03:36:37

标签: c++

我该如何在开关盒中放入循环,它也只能得到我输入的最后一个数字

    switch(choose)
    {
    case 1:

        cout << "How many number you want to input? ";
        cin >> num;

        for (int i = 1; i <= num; i++)
        {
            cout << "Input a number" << "(" << i << "): ";
            cin >> choose;
        }
        root = Insert(root, choose);
        cout<<"\nElements in data are:";
        Inorder(root);
        break;

2 个答案:

答案 0 :(得分:2)

您需要移动

root = Insert(root, choose);

for循环内。

for (int i = 1; i <= num; i++)
{
    cout << "Input a number" << "(" << i << "): ";
    cin >> choose;
    root = Insert(root, choose);
}

代码改进建议

创建一个函数以读取数字并将其添加到列表中。
case子句下调用该函数。

switch(choose)
{
  case 1:
    root = readInput(root);
    break;

假设root的类型为Node*

Node* readInput(Node* root)
{
    cout << "How many number you want to input? ";
    cin >> num;

    for (int i = 1; i <= num; i++)
    {
        cout << "Input a number" << "(" << i << "): ";
        cin >> choose;
    }
    root = Insert(root, choose);
    cout<<"\nElements in data are:";
    Inorder(root);

    return root;
}

答案 1 :(得分:0)

仅在for循环完成后才插入,这意味着您只会插入一次。您需要在for循环中使用Insert()。