这是我的代码。目前,代码一次打印出所有座位。我需要它打印一个座位,然后重新启动到用户提示。它不能分配同一个座位,当没有更多座位时,应该显示头等舱已满。
int main(int argc,char**argv({
int firstClass[] = {1, 2, 3, 4}; //first class array
int firstLen = 4; // first class length
int userInput;
int i;
//user prompt
printf("Please type 1 for First Classn");
printf("Please type 2 for Economyn");
printf("Please type 0 to Quitn");
printf("n");
scanf("%d", &userInput); // scanning for user input
if(userInput = 1){
for(i = 0; i < 4; i++){
if(i < firstLen){
printf("Class: First Seat Number: %dn", firstClass[i]);
}
else{
printf("First Class Full. Next flight is tomorrow.");
}
}
}
}
您可以使用变量跟踪哪些座位被占用。每次用户选择1
时,打印出该索引的座位号,然后递增索引。
然后,您将把它封装在一个循环(for
或while
(中,并且只有在用户输入0
时才退出该循环。确保定义了用于跟踪循环外部的当前索引的变量。
类似这样的东西:
int main(void)
{
const int first_class[] = {1, 2, 3, 4};
const size_t first_class_size = sizeof(first_class) / sizeof(first_class[0]);
size_t first_class_index = 0;
int user_input = 0;
do
{
print_menu();
scanf("%d", &user_input);
if (user_input == 1)
{
if (first_class_index < first_class_size)
{
printf("Here is your ticket information:n");
printf("Seat Number: %d, Class: Firstnn", first_class[first_class_index++]);
continue;
}
printf("No first class seats are available.nn");
}
} while(user_input != 0);
}