初始化我的数组时出错
Posted
技术标签:
【中文标题】初始化我的数组时出错【英文标题】:Getting an error initializing an my array 【发布时间】:2016-04-12 23:24:33 【问题描述】:这是我的代码, 它是一个简单的代码,旨在为 50 个插槽初始化一个数组,用零填充它们。然后向用户询问位置数组[0] 的一个数字。然后它将该数字复制到前 25 个插槽并对其进行平方。然后它取相同的数字并将其乘以 3 并将其放在最后 25 个插槽中。然后程序打印数组,每 10 个元素换行。
我在 13:39 遇到错误:错误:数组必须使用大括号括起来的初始化程序进行初始化 16:34:错误:数组必须用大括号括起来的初始化程序初始化 19:11:错误:“双”之前的预期主表达式 7:9:警告:未使用的变量 'i' [-Wunused-variable]
#include<iostream>
using namespace std;
int main()
double array[50] = 0 ;
double i;
cout << "Type in your index nummber" << endl;
cin >> array[0];
for(int i = 0; i < 25; i++)
double array[i] = array[0] * array[0];
for(int i = 0; 25 < i && i <50; i++)
double array[i] = array[25] * 3;
for (int i = 0; i < 50;)
cout << double array[i] << " ";
if ((i + 1) % 10 == 0)
cout << endl;
下面的固定代码
#include<iostream>
using namespace std;
int main()
double array[50] = 0 ;
double i;
cout << "Type in your index number" << endl;
cin >> array[0];
for(int i = 1; i < 25; i++)
array[i] = array[0] * array[0];
for(int i = 25; i < 50; i++)
array[i] = array[24] * 3;
for (int i = 0; i < 50; i++)
cout << array[i] << " ";
if ( (i+1) % 10==0)
cout << endl;
return 0;
结果:
输入您的索引号
4
4 16 16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16 16 16
16 16 16 16 16 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48
【问题讨论】:
double array[i]
声明了一个名为 array
的变量。要引用已声明的变量,请使用它们的名称 array
;你不要重复他们的声明。
谢谢,我想我明白了!
【参考方案1】:
您已通过指定double array[i]
在任何地方使用数组声明。这是不正确的。只需使用array[i]
。 即
for(int i = 0; i < 25; i++)
array[i] = array[0] * array[0];
for(int i = 0; 25 < i && i <50; i++)
array[i] = array[25] * 3;
for (int i = 0; i < 50;)
cout << array[i] << " ";
请注意,您的第二个循环是虚假的。它永远不会运行。只需将其更改为:
for(int i = 25; i < 50; i++)
array[i] = array[24] * 3;
您的第一个循环将平方 array[0]
并将其存储在 array[0]
中,因此 array[1]
将是原始数字的 4 次方。如果这不是您的意图,请从 @ 开始迭代987654328@,不是i = 0
。
【讨论】:
我一开始就是这样,但是遇到了初始化错误,很害怕并全部更改,因为它给了我更少的错误。感谢您的解释。并且通过像您一样修复第二个循环,您只需将参数正确向前推就消除了对 and 语句的需要? 嗯,是的,更不用说让循环真正运行了。你有它的方式,i
从 0 开始,循环条件失败,因为 25 not 小于 0。你显然希望循环 begin 在 25,并在达到 50 时结束。【参考方案2】:
其中有一些错误。试试这个。它编译并运行。不确定输出是否是您想要的...
第一个问题是这个
for(int i = 0; i < 25; i++)
double array[i] = array[0] * array[0];
C++ 编译器将此视为它不支持的新可变长度数组。你这样做了几次。第二个问题是这个 for 循环中的测试表达式......
for(int i = 0; 25 < i && i <50; i++)
double array[i] = array[25] * 3;
它永远不会测试为真,因为int i = 0;
意味着25 < i
总是假的。
#include <iostream>
using namespace std;
int main()
double array[50] = 0 ;
double i;
cout << "Type in your index nummber" << endl;
cin >> array[0];
for(int i = 0; i < 25; i++)
array[i] = array[0] * array[0];
for(int i = 25; i < 50; i++)
array[i] = array[25] * 3;
for (int i = 0; i < 50; i++)
cout << array[i] << " ";
if ((i + 1) % 10 == 0)
cout << endl;
return 0;
【讨论】:
可以解释您更改的内容和原因。仅代码答案导致Cargo Cultists。以上是关于初始化我的数组时出错的主要内容,如果未能解决你的问题,请参考以下文章