删除C ++中的输出空间

时间:2019-03-03 15:14:26

标签: c++11 formatting output

我是cpp语言的新手。我试图解决插入排序问题。但是,向在线裁判提交时出现演示错误。在程序中,我必须在插入排序的每个步骤的一行中显示中间顺序。到目前为止,这是我的代码:

void InsertionSort(int *arr, int n)
{

for (int i = 1; i < n; i++)
{
    int key = arr[i];
    int j = i - 1;
    while (j >= 0 && arr[j] > key)
    {

        arr[j + 1] = arr[j];
        j--;
    }

    arr[j + 1] = key;
    for (int k = 0; k < n; k++)
        cout << arr[k] << " ";
    cout << endl;
}}

输出:

1 2 3<Here is space.want to remove it> 
1 2 3<Here is space.want to remove it>

谢谢。

1 个答案:

答案 0 :(得分:1)

不要std::cout << arr[k] << ' '的所有n元素。将其应用于除最后一个之外的每个。然后,输出该元素,但不要在其后跟空格,而要在其后跟'\n'std::endl,最好是前一个:

for (int k = 0; k < n - 1; k++)
    cout << arr[k] << " ";
cout << arr[n - 1] << '\n';

n - 1循环条件下,注意n而不是for()。这会将主体应用于除最后一个元素之外的所有元素

然后,我们需要以不同的方式对待最后一个元素(由第n - 1个索引表示)-我们不想在后跟" "的情况下打印它,但是请换行。这就是为什么我们这样做<< '\n';。请注意,std::endl也可以使用,但这不是必需的。我鼓励您阅读有关std::endl vs '\n'的信息。