我有一个用C编写的代码,我需要用户在菜单中选择4个不同的选项。
我的代码如下:

while(t!=0)
{
printf("-------------------MENU---------------------------\n");
printf("1. Randomize array.\n");
printf("2. Sort array in ascending order.\n");
printf("3. Print min- and max value.\n");
printf("4. Search for a number in the array.\n");
scanf("%d",&t);
    switch(t)
    {
        case 1:
        randomize(array);
        print(array);
        break;

        case 2:
        array[ARRAYSIZE]=bubblesort(array,ARRAYSIZE);
        break;

        case 3:
        array[ARRAYSIZE]=max(array,ARRAYSIZE);
        break;

        case 4:
        search(array,ARRAYSIZE);
        break;

        default:
        printf("Wrong input. Please try again!");
    }
}

我希望用户在2、3和4之前选择1。我尝试在while循环中使用if语句,如下所示:
while(t!=1)
{
if(!array[ARRAYSIZE])
{
 printf("You must choose 1 first!");
}
}

但即使这样,如果我先选择1,仍然会收到错误消息“You must choose 1 first”,我猜if语句仍然将数组[ARRAYSIZE]读取为空?
我正在考虑从函数randomize()返回某种布尔标志,它告诉main()中的if语句是否执行了选项1。
我真的被困在这里了。有人有什么建议吗?

最佳答案

不要检查整个数组,您可能需要一个标志来说明数组是否已初始化。
可能是这样的:

int initialized = 0;  // Start out as "false"

switch (t)
{
case 1:
    // Initialize array...
    initialized = 1;
    break;

case 2:
    if (!initialized)
    {
        printf("You need to initialize your array by selecting alternative 1 first.\n");
    }
    else
    {
        // Do the actual stuff here...
    }
    break;

...
}

关于c - 如果用户在C的菜单中选择2之前的1,则提示错误消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32712313/

10-11 22:31
查看更多