gpt4 book ai didi

c - 使用有限的字符串自动填充数组元素

转载 作者:行者123 更新时间:2023-11-30 17:03:30 25 4
gpt4 key购买 nike

假设一艘船上有 12 名乘客。他们每个人都是不同的。这12名乘客分为以下几类:

  • 类(class)
  • 年龄
  • 性别

每个类别都有 2 个不同的选项:

  • 类别要么是“第一”,要么是“第二”

  • 年龄可以是“成人”或“ child ”

  • 性别可以是“男”或“女”

我决定创建一个名为“Passenger”的新结构数据类型。正如您将在下面的代码中看到的,它具有三个成员:类(class)、年龄、性别。

然后我创建这个新创建的数据类型(Passenger)的变量(allPassengers)。

但是现在,我如何使用所有 12 种不同的乘客信息组合来填写名为“allPassengers”的乘客类型数组?

例如我手动创建了前三个组合:

#include < stdio.h > #include < string.h >

typedef struct {
char class[7];
char age[6];
char gender[7];
}
Passenger;


/* This is where all the information about passengers will be stored, global variable,
there are 9 combinations of passengers (allocated array elements for the variable), last one is reserved for the null character \0 */
Passenger allPassengers[10];


int main() {

// First combination
strcpy(allPassengers[0].class, "first");
strcpy(allPassengers[0].age, "adult");
strcpy(allPassengers[0].gender, "male");


// Second combination
strcpy(allPassengers[1].class, "second");
strcpy(allPassengers[1].age, "adult");
strcpy(allPassengers[1].gender, "male");


// Third combination
strcpy(allPassengers[2].class, "first");
strcpy(allPassengers[2].age, "child");
strcpy(allPassengers[2].gender, "male");

// ... etc

return 0;
}

Here's相同的代码(复制粘贴友好)。

我知道只用数字(for 循环)填充数组很容易。但我不知道如何填写,例如前两个 allPassengers[0]allPassengers[1] 以及必要的信息。我想我会在 for 循环中编写一个复杂的“if 语句”,例如检查之前所有乘客的舱位,例如如果有超过 2 个匹配项,则指定类别“第二”。

或者开关盒...不知道。如果我必须填写一个更难的组合怎么办?

如何只允许变量采用有限的字符串?例如类可以采用“第一”或“第二”?

有什么线索吗?

最佳答案

如果您的数据严格限制为您所说的特定值,我建议您创建枚举类型。

示例:

enum ClassEnum{
FIRST,
SECOND
};

enum AgeEnum{
ADULT,
CHILD
};

enum GenderEnum{
MALE,
FEMALE
};

typedef struct {
ClassEnum class;
AgeEnum age;
GenderEnum gender;
}
Passenger;

它将简化您尝试执行的操作,因为您不再需要操作字符串。

为了用每种组合填充数组,您别无选择,只能编写一个遍历所有组合的函数。

关于c - 使用有限的字符串自动填充数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36138125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com