【发布时间】:2015-07-11 03:45:13
【问题描述】:
我正在尝试学习如何使用函数通过菜单传递变量。问题是,从来没有人教过如何这样做。您可以想象,我将在第一个菜单功能中输入的任何变量,以便在我的案例/其他功能中正常使用,例如
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;
}
【问题讨论】:
-
菜单的显示应该在一个循环中,然后当 scanf() 返回一个值时,1) 检查 scanf() 的返回值,而不是参数,是(在这种情况下) 1. 否则,getchar() 直到 EOF 或 '\n' 被读取重新显示菜单。 2) 成功 scanf() 后,检查读取的值是否在 1...5 范围内。如果不在范围内,则循环再次显示菜单(可能在显示错误消息之后。
-
应该有一个'break;' switch 语句中默认 case 结尾的语句
标签: c function menu switch-statement