在比较特定输入中的程序的数组中出错
Getting error in an array comparing program in a specific input
我写了一个小程序,它将两个数组与自定义数组大小进行比较。每当我将数组大小设置为 4 时,程序在比较每个数组的第四个成员时都无法正常工作。(当我将 x 设置为 4 时,第四个数组成员无法正确比较(
这是代码:
#include <iostream>
using namespace std;
int main()
{
int x;
std::cin >> x;
int i =1;
int arr[x];
int arr2[x];
while(i <= x)
{
std::cout << "Enter row " << i << " of arrn";
std::cin >> arr[i];
i++;
}
i = 1;
while(i <= x)
{
std::cout << "Enter row " << i << " of arr2n";
std::cin >> arr2[i];
i++;
}
for(int a = 0;a <= x;a++)
{
if(arr[a] == arr2[a])
std::cout << "row " << a << " is truen";
}
}
您有一个越界访问,这会产生未定义的行为。回想一下,原始数组的索引从零开始,而不是从 1 开始。因此
int i = 0;
是索引的正确初始化,而第一个循环必须更改为
while (i < x) { /* ... */ }
然后,i
的分配需要再次调整为
i = 0;
和剩下的两个循环
while (i < x) { /* ... */ }
for (int a = 0; a < x; a++) { /* ... */ }
作为旁注,您正在使用可变长度数组(arr
和 arr2
(,这是非标准C++(有关更多信息,请参阅此线程(。首选std::vector
具有运行时相关大小的简单容器。
i = 1;
while(i <= x)
{
std::cout << "Enter row " << i << " of arr2n";
std::cin >> arr2[i];
i++;
}
您将元素存储在以 1 个索引开头的数组中
for(int a = 0;a <= x;a++)
{
if(arr[a] == arr2[a])
std::cout << "row " << a << " is truen";
}
但是从 0 索引开始比较。保持从 0 或 1 开始的一致性
for(int a = 1;a <= x;a++)
{
if(arr[a] == arr2[a])
std::cout << "row " << a << " is truen";
}
它会工作..
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 显示错误输出的简单数组排序程序
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 为什么使用数组元素查找最大数字的程序不起作用?
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 有人可以在下面的示例 C++ 程序中解释字符数组 KCHAR1 的奇怪行为吗?
- C ++程序如何返回我的数组或写入全局变量
- For 循环在尝试读取数组 c++ 时程序崩溃
- 无法将 2D 数组传递到 c++ 中的帮助程序函数中
- 将数组作为多线程应用程序中函数的返回传递
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- 我编写了一个程序来显示数组的内容,但它显示的是它的地址
- C ++程序在字符数组中插入单词
- 数组 C++ 上的异常处理程序
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 使用终止程序的指针在数组中输入字符串
- C++引物动态数组初始化程序的数目超过大小