我想为n
和c
数组输入e
次值。以下程序不允许我输入'n'的值。你能告诉我哪里出错了吗?
#include <iostream>
using namespace std;
int main()
{
int n,c[n],e[n];
cin>>n;
for(int i=0;i<n;i++){
cin>>c[i]>>e[i];
}
return 0;
}
答案 0 :(得分:1)
&#34; N&#34;应该在使用它来修复数组大小之前定义。此外, const int 或常量应该用于声明数组大小而不是普通的 int 。
为了使用纯数据类型,您可以像
一样动态初始化数组vector<int> a(n); or
int a = new int[n]
答案 1 :(得分:1)
int n,c[n],e[n];
此声明在堆栈上创建具有随机大小的数组c
和e
,因为n
作为自动变量使用随机值初始化。相反,您需要在堆上动态创建数组或使用std::vector
。
示例:
#include <iostream>
#include <vector>
using namespace std;
int main() {
// your code goes here
int n;
vector<int> v;
std::cin >> n;
v.resize( n);
for( int i = 0; i < n; ++i) {
cin >> v[i];
}
for( int i = 0; i < n; ++i) {
cout << v[i];
}
return 0;
}
答案 2 :(得分:1)
在
行中int n,c[n],e[n];
计算机不知道'n'的确切值,所以它不能分配数组的内存。
最简单的解决方案是使用固定数字创建数组,并在知道n的值后检查n,如下所示:
int n, c[1024], e[1024];
cin >> n;
if (n > 1024) { /* error */ }
另一种方式是在你知道n:
的值之后的malloc内存int n;
cin >> n;
int *c = new int[n];
int *e = new int[n];
xxxx
delete [] c;
delete [] e;
答案 3 :(得分:-2)
您可以尝试这样的事情:
#include <iostream>
using namespace std;
int main()
{
int temp = 100; /*Random value*/
int c[temp];
int e[temp];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>c[i]>>e[i];
}
return 0;
}
现在,我选择temp
作为100,但您可以在int
可以存储的情况下做大事。现在,如果n
低于temp
,那么您的for循环将让您保存您的值而不会遇到麻烦。