用户输入数组程序保持返回255

时间:2015-03-17 23:23:12

标签: c++ arrays crash

我可能做错了什么。我所知道的是程序在显示数组时会一直崩溃。

这是代码:

#include <iostream>

using namespace std;

int findSmallestRemainingElement(int input_values[], int size, int index);

void swap(int input_values[], int first_index, int second_index);

void insertionSort(int input_values[], int size);

void displayArray(int input_values[], int size);

int* userInput(int input_values[], int size);

int main()
{
    int input_values[50];
    userInput(input_values, 50);
    for (int i = 0; i < 50; i++)
    {
        cout << input_values[i];
    }
    insertionSort(input_values, 50);
    displayArray(input_values, 50);
    cout << "\n";
}

void insertionSort(int input_values[], int size)
{
    for (int i = 0; i < size; i++)
    {
        int index = findSmallestRemainingElement(input_values, size, i);
        swap(input_values, i, index);
    }
}

int findSmallestRemainingElement(int input_values[], int size, int index)
{
    int index_of_smallest_value = index;
    for (int i = index + 1; i < size; i++)
    {
        if (input_values[i] < input_values[index_of_smallest_value])
        {
            index_of_smallest_value = i;
        }
    }
    return index_of_smallest_value;
}

void swap(int input_values[], int first_index, int second_index)
{
    int temp = input_values[first_index];
    input_values[first_index] = input_values[second_index];
    input_values[second_index] = temp;
}

void displayArray(int input_values[], int size)
{
    cout << input_values[0] << endl;

    cout << input_values[24] << endl;

    cout << input_values[49] << endl;

    for (int i = 0; i < size; i++)
    {
        if (i != 0)
        {
            cout << "\n";
        }
        cout << input_values[i];
        cout << "\n";
    }
}

int* userInput(int input_values[], int size)
{
   int user_input[50];
   for (int i = 0; i <= 50; i++)
    {
       cout << "Provide input: ";
       cin >> user_input[50];
    }
    return user_input;
}

程序不断崩溃,错误代码为255,除非我提前停止它(它返回一些奇怪的负值)。

该程序是跳转到C ++中的实践问题的解决方案,对数组进行排序(即,它是插入排序)。

这就是问题本身:

  

编写一个包含50个值并打印出最高值的程序,   最低,平均,然后是所有50个输入值,每行一个。

我已经使用代码的最新更新编辑了这篇文章。即使在包含return语句

之后,我仍然继续获得这个奇怪的数组输出
return user_input;

那是什么呢?它只是给了我警告:

  

警告:本地变量的地址&#39; user_input&#39;返回[启用   默认]

关于退货声明。

1 个答案:

答案 0 :(得分:1)

你这样做:

  

userInput(input_values [50],50)

应该是

  

userInput(input_values,50)

你多次这样做。 第二句话:你也可以循环输入,就像你在程序主要部分做cout一样。