我有一个简单的问题。 我试图使用while循环将数字列表存储到数组中。
例如,假设数组的大小为5。
如果我输入:1 2 3 4 5并按回车键,则不会出现任何问题
但是,如果数组的大小是10,我输入: 1 2 3 4 5 6 7 8 9 10然后它不起作用,然后跳过这些线。
我搜索过但无法找到答案。是不是可以输入太长的数字列表在一行中用空格分隔使用cin? 我是否必须像1 [enter] 2 [enter] ... 10 [enter]?
那样做感谢任何帮助。
int n=1,key,i;
int arra [n];
cout << "Please enter the size of array (no more than 100): ";
cin >> n;
while (n>100)
{
cout << "Please enter a number no more than 100: ";
cin >> n;
}
cout << "Please enter " << n << " numbers separated by a space and ended with Enter key: \n";
for (i=0;i<n;i++) // store numbers into array
cin >> arra[i];
cout << "Please enter the key number that you want to find out: ";
cin >> key;
if (search(arra,n,key)==1)
cout << "Yes, the key is in the array. \n";
else
cout << "No, the key is not in the array. \n";
答案 0 :(得分:1)
故障是,在输入之前将n的值分配给数组的大小。
int n=1;
int arra[n];
//arra's size is 1
您应该在输入后指定大小。
while(n>100){
cout <<"Enter a number less than 100\n";
cin >> n;
}
//now declare the array
int arra[n];
现在,arra []的大小由用户输入。
答案 1 :(得分:0)
数组长度应始终保持不变。 int arra[n]
不起作用,因为n是变量。根据您的要求设置int arra[50]
或其他内容。设置高于必要的位置是可以的。但是,如果您想要一个可在运行时设置的大小数组,则需要dynamic memory allocation
。如果您对动态内存分配感兴趣,那么您必须学习c ++的new and delete
。
答案 2 :(得分:0)
您正在静态地为阵列分配内存。尝试使用vector:
vector<int> arra;
在输入值时,只需在构建函数中使用:
int input;
cin >> input;
arra.push_back(input);
这样,您不必设置限制为100,因为它为每个新输入动态分配内存。