而不是在第一个" 1"之后立即结束程序,如何选择继续执行另一个功能?类似于再次显示菜单以选择其他功能。示例:2或3
#include <stdio.h>
int testing(); int rewarding(); int buying();
void main()
{
int menu;
printf("Enter 1 for testing:\n");
printf("Enter 2 for rewarding:\n");
printf("Enter 3 for buying:\n");
scanf("%d", &menu);
if (menu == 1) { //first function
testing();
}
else if (menu == 2) { //second function
rewarding();
}
else if (menu == 3) { //third function
buying();
}
system("pause");
}
testing() {
printf("this is the first function\n"); // proceed to selection menu to choose another function when first function is completed
return(0);
}
rewarding() {
printf("this is the second function\n");
return (0);
}
buying() {
printf("this is the third function\n");
return(0);
}
答案 0 :(得分:0)
在一段时间(真实){...}循环中包裹您的菜单和函数调用内容,并进行第四个菜单输入以退出&#39;和其他代码if(menu == 4){break; }
示例:
#include <iostream>
int main(int argc, char **argv)
{
while(true)
{
int menu;
std::cout << "Press (1) FuncA, (2) Func B, (3) Func C or (4) Quit" << std::endl;
std::cin >> menu;
if (menu == 1)
testing();
else if (menu == 2)
rewarding();
else if (menu == 3)
buying();
else if (menu == 4)
break;
else
std::cout << "Please press 1, 2, 3 or 4" << std::endl;
}
return 0;
}
&#34;休息&#34;语句立即取消while()循环并退出应用程序。所有其他选择执行相应的功能并循环回菜单。
对tests(),rewarding()或purchase()的调用括号用于分组表达式,如果只需要一个表达式则不需要。我将它们从我的ifs中删除了,但这只是一个品味问题。
您还应该为函数指定返回类型。使用 void testing(){} 如果你不需要返回一个值(你还必须从函数中删除return语句)
答案 1 :(得分:0)
while
循环并对其执行操作。
// Loop forever until the user chooses the option to exit the loop.
while ( true )
{
printf("Enter 1 for testing:\n");
printf("Enter 2 for rewarding:\n");
printf("Enter 3 for buying:\n");
printf("Enter 4 to exit:\n");
if ( scanf("%d", &menu) != 1 )
{
// Error in input.
// Read and discard the rest of the line.
printf("Invalid input. Discarding the input.\n");
int c;
while ( (c = getc(stdin)) != EOF && c != '\n' );
// Go on to the start of the loop.
continue;
}
if (menu == 1) { //first function
testing();
}
else if (menu == 2) { //second function
rewarding();
}
else if (menu == 3) { //third function
buying();
}
else if (menu == 4) { //fourth option
break;
}
else
{
printf("Invalid option: %d\n", menu);
}
}
除了以上......
将main
的返回类型从void
更改为int
。这是定义main
的标准兼容方式。
int main() { ... }
答案 2 :(得分:0)
使用while循环。 switch
比if-else
更清晰。
请注意scanf
的返回值,可能是0
,1
或EOF
。我们只想在它1
时继续。
#include <stdio.h>
void print_menu() {
printf("Enter 1 for testing:\n");
printf("Enter 2 for rewarding:\n");
printf("Enter 3 for buying:\n");
}
void testing() {}
void rewarding() {}
void buying() {}
int main() {
while (1) {
print_menu();
int menu;
int ret = scanf("%d", &menu);
if (ret == EOF) break;
if (ret != 1) continue;
switch(menu) {
case 1: testing(); break;
case 2: rewarding(); break;
case 3: buying(); break;
default: printf("Unknown input %d\n", menu); break;
}
}
return 0;
}