我定义了一个结构体(bldg),它有一个变量(int classroom[5][40]),我的函数计算剩余的可用座位(40)没有返回正确的值。
#define MAX_ROOMS 5
#define MAX_OCCUPANTS 40
typedef struct bldg{
int classroom[MAX_ROOMS][MAX_OCCUPANTS];
int seminarRoom[MAX_ROOMS][MAX_OCCUPANTS];
int auditorium[MAX_ROOMS][MAX_OCCUPANTS];
int trainingRoom[MAX_ROOMS][MAX_OCCUPANTS];
} bldg;
void displayAvailableRooms(const bldg *ag)
{
printf("Available Seats in Classrooms:\n");
for (int i = 0; i < MAX_ROOMS; i++)
{
int availableSeats = 0;
for (int j = 0; j < MAX_OCCUPANTS; j++)
{
if (ag->classroom[i][j] == 0)
{
availableSeats++;
}
}
printf("Classroom %d: %d seats available\n", i + 1, availableSeats);
}
}
int main()
{
bldg A;
displayAvailableRooms(&A);
return 0;
}
字符串
产出
Available Seats in Classrooms:
Classroom 1: 17 seats available
Classroom 2: 13 seats available
classroom 3: 21 seats available
Classroom 4: 19 seats available
classroom 5: 17 seats available
型
它应该是40为所有的房间,因为他们都是空的,但我一直得到这些输出。我需要帮助
2条答案
按热度按时间xoefb8l81#
数组中的值未初始化,因此是不确定的,因此
availableSeats
的值也是不确定的。如果它是一个有符号的int,你甚至可能会得到溢出行为。如果您希望将这些值设置为
0
,则必须显式地执行此操作。字符串
您可能希望将其分解为一个单独的函数。
p8h8hvxi2#
或者初始化数组within loops,你也可以提供初始化器:
字符串
请注意,初始化数组的一个元素就足够了,它也可以在中间的某个地方(只是为了说明,我在训练室这样做了,一个训练室中的一个座位将被占用......)-所有未明确指定的数组元素将被初始化为0。