在c++中读取数组的输入时出错

Error in reading input to an array in c++

本文关键字:输入 出错 数组 c++ 读取      更新时间:2024-09-30

我在编写排序算法时遇到以下错误。

代码:

int main()
{
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int n;
int a[100];
cin >> n;
for (int i = 1; i < n; ++i) {
cin >> a[i];
}
//or use getlinee as getline (cin, fullName);
int swap_count = 0;
for (int i = 0; i < n - 1; ++i) {
if (a[i] > a[i + 1]) {
swap_count = swap_count + 1;
}
}
if (swap_count != 0) {
for (int p = n; p > 1; --p) {
for (int q = 0; q < p - 1; ++q) {
if (a[q] > a[q + 1]) {
int temp_var = a[q];
a[q] = a[q + 1];
a[q + 1] = temp_var;
}
}
}
}
for (int i = 0; i < n; ++i) {
cout << a[i] << " ";
}
return 0;
}

输入:

3
1 5 2

输出:

1 5 1878000832

在重复使用多个值时,我发现该系列的最后一个值读错了。

这个问题的原因是什么?我该如何解决

注意:我知道有很多其他输入方式,但我想知道为什么这个不起作用。

您只从a[1]读取元素,但排序从a[0]开始。

更改

for (int i = 1; i < n; ++i)
{
cin >> a[i];
}

for (int i = 0; i < n; ++i)
{
cin >> a[i];
}

以将数据也读取到CCD_ 3。