我正在尝试学习如何使用函数通过菜单传递变量。问题是,从来没有人教过如何这样做。正如您可以想象的那样,我在第一个菜单函数中输入的任何变量通常在我的案例/其他函数中使用,例如
if (count==0)
{
low = number;
high = number;
count++;
sum = number;
}
else
{
if (number < low)
number = low;
if (number > high)
high = number;
count ++;
sum += number;
}
不会通过函数 2,任何对 C 更了解的人都会意识到。它在 int main 中也不起作用。如何定义用户输入的数字、最高、最低等。到其他功能?这是我到目前为止所拥有的,循环和菜单工作正常。
#include<stdlib.h>
#include<stdio.h>
int menuChoice()
{
int choice;
printf("1.Enter a number\n");
printf("2.Display Highest Number Entered\n");
printf("3.Display Lowest Number entered\n");
printf("4.Display Average of Numbers Entered\n");
printf("5.Quit\n");
printf("Enter your choice: ");
scanf("%i", &choice);
return choice;
}
int function1()
{
int number;
printf("Enter a number:\n");
scanf("%i", &number);
return number;
}
int function2()
{
}
int function3()
{
}
int function4()
{
}
int main()
{
int quit = 0;
while (quit != 1)
{
int menu;
menu = menuChoice();
switch (menu)
{
case 1:
function1();
break;
case 2:
function2();
break;
case 3:
function3();
break;
case 4:
function4();
break;
case 5:
quit = 1;
break;
default:
printf("Please enter 1 through 5\n");
}
}
return 0;
}
最佳答案
让我们看看可以改进此代码的一些方法。
命名函数 - 应为函数提供清晰、描述性的名称,以便不熟悉程序的人能够轻松理解其功能。像 function1 和 function2 这样的名称无法实现这一点。
使用适当的数据结构 - 听起来您正在尝试跟踪用户输入的所有数字,但您目前没有任何方法可以做到这一点。最好的方法是使用数组,它是保存其他值的容器。为了跟踪到目前为止的数字,让我们创建两个变量 - 一个存储数字的数组和一个跟踪的整数已输入了多少个数字。现在,让用户输入最多 100 个数字。我们通过在程序顶部编写
int arr[100];
和int numCount = 0;
来实现这一点。快速旁注 - 这称为全局变量 - 通常这不是一个好主意,但我们现在不会担心它。将代码分成适当的函数 - 您在
function1
中很好地做到了这一点。它很好地执行了它的任务,即从用户那里获取一个号码并将其返回。现在让我们使用这个数字。在情况1
之后,我们写arr[numCount] = function1(); numCount += 1;
这会将数组中第一个未使用的条目设置为输入的数字,然后增加我们拥有的元素数量的计数器。
不要执行不必要的计算 - 让我们考虑一下如何实现最高和最低的功能。一种方法是每次调用函数时遍历整个数组并跟踪我们看到的最大数字。这可行,但我们最终会重复很多工作。如果每次我们得到一个新数字时,我们都会更新当前看到的最高和最低数字怎么办?
使用循环扫描数组 - 为了计算平均值,我们将使用 for 循环。如果您不明白,请查阅相关文档。
我认为您可以看到如何将这种想法扩展到计算输入值的平均值。这是我修改后的内容 - http://pastie.org/10285795 .
关于c - 使用函数通过 switch 语句传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31353201/