创建一个3x3x3数组。用0到9之间的随机值填充。输出数组。找出3个最小值和3个最大值的输出。我不断地从编译器中得到错误,同时它说明了我的初始化问题。我不知道为什么。
`#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void initialize(int x[3][3][3]) int column; int row; int layer; int large1;
void find(int x[3][3][3]); //to find number to fill
int main(){
srand(time(NULL));
int x[3][3][3];
int large1, large2, large3, small1, small2, small3, row, column, layer;
initialize(x[3][3][3]);
int x = RAND() % 0 + 10;
}
void initialize(int x[3][3][3]){
int large1, large2, large3, small1, small2, small3;
large1 = large2 = large3 = INT_LARGE;
for (int r = 0; r < 3; r++){
for (int c = 0; c < 3; c++){
for (int l = 0; l < 3; l++){
if (x[r][c][l]>large1){
large3 = large2;
large2 = large1;
large1 = x[r][c][l];
}
}
}
}
cout << large1 << large2 << large3 << endl;
system("pause");
}
`
- 删除代码开头和末尾的垃圾邮件
- 在
void initialize(int x[3][3][3])
和int column; int row; int layer; int large1;
之间添加分号 initialize(x[3][3][3]);
坏,因为它的访问超出范围。使用initialize(x);
- 在CCD_ 5中存在三个错误:
x
与int x[3][3][3];
冲突请更改其名称RAND()
不在标准中。你是说rand()
吗- 不要将整数除以0
- 未定义
INT_LARGE
。请在使用前在某个地方定义它
如果没有错误消息,很难猜测出了什么问题。
也就是说,int x = RAND() % 0 + 10;
像灯塔一样引人注目,所以我猜这是你的问题。不能使用模数(或除以(0,并且模数在加法之前。您可以使用括号
第一个问题是initialize
的声明不是以分号结尾,而是后面跟着... ]) int column; int row; int layer; int large1;
。这无法解析。
第二个问题是int x = RAND
线完全没有意义。它重新定义了x
,并将在initialize
之后发生。这是一个坏名字,因为它不初始化任何东西,而是对元素进行排序。
在这一点上,你真的应该回到你的书上,然后回到高级任务上。确保initialize
实际初始化了x
,然后将实际的排序逻辑放在find
中。看起来你被要求完成一个程序,而你完全忘记了find
。