我正在尝试在数组中找到一个int实例,然后打印出该int的索引。问题是我用来存储我正在检查的数字在输入中间不断变化的变量。
int num, size;
int arr[size];
cin >> num >> size;
for (int i = 0; i < size; i++){
cin >> arr[i];
}
for (int i = 0; i < size; i++){
if (arr[i] == num){
cout << i << endl;
return 0;
}
}
return 0;
输入是:
23
12
1 3 5 7 9 11 13 15 17 19 21 23
在输入数组arr时,当分配arr [6]时,变量num变为13。是什么导致变量切换?
答案 0 :(得分:3)
有一件事非常错误,另一个问题是C ++合规性。
这两行:
int num, size;
int arr[size]; // wrong.
您正在初始化值为size
的数组。但是size
的价值是多少?它没有被设置,因此它将是一些随机值。也许它会是6,100,0,843241,-342,你不知道。
此外,假设您在声明数组之前 正确设置了size
。使用变量声明数组不是标准C ++。必须使用常量表达式声明数组。
如果您希望您的程序正确且标准C ++,请使用std::vector
。
#include <vector>
#include <iostream>
using namespace std;
int main()
{
int num, size;
cin >> num >> size;
std::vector<int> arr(size);
for (int i = 0; i < size; i++)
cin >> arr[i];
for (int i = 0; i < size; i++)
{
if (arr[i] == num)
{
cout << i << endl;
return 0;
}
}
}
答案 1 :(得分:1)
int num, size;
int arr[size];
cin >> num >> size;
在阅读之前,您无法使用尺寸值...
int num, size;
cin >> num >> size;
int arr[size];