我一直在尝试在代码块中运行这个平均计算器程序,它的构建没有错误,但由于某些原因它无法运行,我不知道为什么。 我的代码在
之下#include < iostream >
using namespace std;
double getAverage(int amount, int numbers[]) {
// Declare the variables
int total = 0;
double avg = 0;
//Find each number in the array then add it to the total
for (int i = amount; i > 0; i--) {
total += numbers[i];
}
//Divide the total by the amount to get the average
avg = total / amount;
cout << "The Average is: ";
//Return the average
return avg;
}
int main() {
// Declare the variables and arrays
int varNum = 1;
int totVar;
int userNums[totVar];
//Ask user for how many variables they want then record it
cout << "How many variables would you like to have? ";
cin >> totVar;
//Ask the user for each variable, then record it into the array
for (int i = totVar; i > 0; i--) {
cout << "Please input variable " + varNum;
cin >> userNums[i];
varNum++;
}
return 0;
}
答案 0 :(得分:1)
请参阅:@Pete Becker获得实际答案
您需要在创建数组totVar
userNums
正在使用
cin >> totVar;
稍后在您的软件中,您可能希望给它一个上限。
int userNums[1000];
并且检查totVar
未执行999。
答案 1 :(得分:1)
此代码存在三个问题。 首先,正如@stefan所说,totVar
在用作数组大小时尚未初始化。但这并不重要,因为第二,int userNums[totVar];
不是合法的C ++(它由于GCC扩展而编译)。 第三,那些循环
for (int i = totVar; i > 0; i--) {
cout << "Please input variable " + varNum;
cin >> userNums[i];
varNum++;
}
和
for (int i = amount; i > 0; i--) {
total += numbers[i];
}
将无效索引传递给数组。大小为N的数组具有从0到N-1的有效索引。第一次通过第一个循环访问numbers[totVar]
,它不在数组的末尾。编写像第一个循环一样的循环的常用方法是
for (int i = 0; i < totVar; ++i)
cin >> userNums[i];
这会访问numbers[0]
,numbers[1]
,... numbers[totVar-1]
的值。
对第二个循环做同样的事情。