我有一个用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/