if/else if/else菜单问题c
我的菜单有点问题。我从用户那里得到一个数字,但无论我做什么,只要我得到一个数字,它就会执行选项一。我做错了什么if/else if/else菜单问题c,c,if-statement,menu,C,If Statement,Menu,我的菜单有点问题。我从用户那里得到一个数字,但无论我做什么,只要我得到一个数字,它就会执行选项一。我做错了什么 int main() { int array[SIZE]; int size = readNum(); fillArray(array, size); char option = 'y'; do { int num = menu(); if(num == 1) fillArray(array, size); else if(num == 2
int main()
{
int array[SIZE];
int size = readNum();
fillArray(array, size);
char option = 'y';
do
{
int num = menu();
if(num == 1)
fillArray(array, size);
else if(num == 2)
{
int newSize = readNum();
fillArray(array, newSize);
}
else
{
sortArray(array);
}
}while(option == 'y');
return 0;
}//end main
int menu()
{
printf("1)Change the values of the array\n2)Change the size of the array and the values in the array\n3)Find and display the mean and median\nChoice: ");
int menuChoice = scanf("%i", &menuChoice);
return menuChoice;
}
scanf
函数返回它进行的数字或成功转换,而不是实际转换的值。它似乎总是能成功地读取您的值,因此将返回1
以获得一次成功的转换
要返回实际用户选择,请不要从调用中为其分配:
int menuChoice:
scanf("%i", &menuChoice);
return menuChoice;
scanf
返回成功转换的次数,因此如果扫描成功,您将用1覆盖转换后的值。没有看到menu()
我们如何知道您做错了什么?menu()
的代码是什么?这可能就是问题所在。因为菜单
只返回1
?请同时向我们显示菜单
功能,否则这将无法回答。此外,选项
永远不会更改。你手上有一个无限循环。对不起,忘记添加了。好的。我如何更改它以返回他们所做的实际选择want@kevorski使用int菜单;scanf(“%i”和menuChoice)代码>而不是int menuChoice=scanf(“%i”&menuChoice)
@kevorski不返回scanf
返回的值。只是出于好奇,int length=sizeof(array)/sizeof(array[0]);将给出我使用的数组的整个长度…至少这是我在research@kevorski是的,在main
中,您可以使用它来获取数组的大小。
int menuChoice = scanf("%i", &menuChoice);