#include <iostream>
using namespace std;
float* findAverage(int arr[][1], int rows, float averages[1]);
int main (){
int myArr[1][1];
for (int i = 0; i < 2; i++){
for (int j = 0; j < 2; j++){
cin >> myArr[j][i];
}
}
float* theAverages = {0};
theAverages = findAverage(myArr, 2, theAverages);
return 0;
}
float* findAverage(int arr[][1], int rows, float averages[1]){
for (int x = 0; x < rows; x++){
for (int i = 0; i < 2; i++){
averages[x]+=arr[i][x];
cout << averages[0] << endl;
}
}
for (int j = 0; j < 2; j++){
cout << float(averages[j]/2) << endl;
}
return 0;
}
^以上是我的代码,但是即使在用0初始化之后它也会显示一个奇怪的浮点数。我哪里出错?
答案 0 :(得分:1)
有几个问题正在发生。
int myArr[1][1];
是1行1列2d数组,但您将其用作2行2列2d数组。您需要将其更改为int myArr[2][2];
。请记住,数组索引从0开始,但数组大小从1开始。
第二个问题是你永远不会分配平均值。你应该改变
float* theAverages = {0};
要
float theAverages[] = {0f, 0f};
你也应该
float* findAverage(int arr[][1], int rows, float averages[1]);
void
函数,因为您已将输出放在averages
中。所以它应该成为
void findAverage(int arr[][2], int rows, float averages[2]);
您还需要在函数末尾删除return 0;
。然后你可以改变
theAverages = findAverage(myArr, 2, theAverages);
要
findAverage(myArr, 2, theAverages);