我需要创建一个程序,为每周3天的每只猴子吃掉食物的数量。输入需要存储在二维数组中。此外,任何循环必须包含在辅助函数中,而不是main()中。每当我尝试将2-d数组传递给函数时,我都会遇到2个主要错误。
1)31:69:错误:'char []'
的初始化程序太多了2)39:35:错误:数组下标
的类型'float [int]'无效有人可以告诉我我做错了什么吗?我认为我错误地初始化了字符串数组,然后错误地将其作为参数传递,但我似乎无法找出正确的方法。
#include <iostream> // input/output declarations
#include <iomanip> // i/o manipulator declarations
using namespace std;
const int NUMBER_OF_MONKEYS = 3;
typedef char day[];
void getAmountEaten(float &);
int main()
{
float monkeyFood[NUMBER_OF_MONKEYS][7]; // 3 rows for monkeys, 7 columns for days
getAmountEaten(monkeyFood);
return 0;
}
void getAmountEaten(float &monkeyFood)
{
day dayOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
int monkeyNumber,
dayNum;
for (monkeyNumber = 0; monkeyNumber < NUMBER_OF_MONKEYS; monkeyNumber++)
for (dayNum = 0; dayNum < 7; dayNum++)
{
cout << "Enter pounds of food eaten by monkey " << monkeyNumber << "on " << dayOfWeek[dayNum];
cin >> monkeyFood[monkeyNumber][dayNum];
}
}
答案 0 :(得分:1)
主要问题是函数的参数。您试图通过引用将2D数组传递给函数,但该函数只能使用按引用传递单个变量作为参数。
答案 1 :(得分:0)
由于您将2D数组作为参考传递,并且您在编译时也具有2D数组的大小!
使用此void getAmountEaten(float (&)[3][7]);
void getAmountEaten(float (&monkeyFood)[3][7])
{
/****/
}
而不是void getAmountEaten(float &);
对于char部分:
您正在创建一个字符数组。但是你要用一个字符数组初始化每个元素的char数组。
此处:dayOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
“太阳”“星期一”比单个字符大小占用更多空间。
您使用的错误语法是创建一个字符数组。
如果要创建“数组字符”数组,请使用:
typedef char* day
day dayOfWeek[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
但是上面的代码会抛出警告,可以使用 string 类来避免。