请教诸位!--关于从“子函数”回到主函数的问题
在主函数调用一个子函数A后再从这个子函数返回到主函数(以就是传说中的返回上一级的应用)然后再调用其他子函数B时实现的功能却是函数A的
表示不能淡定了!
代码如下:【红色部分是我自己想的返回主函数】
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int Main_interface(); //操作系统主界面
void Hanoi(int num,char a,char b,char c ); //汉诺塔功能实现函数
void HNT() ; //汉诺塔操作的主界面
void Main_monkey(); //猴子吃桃的主操作函数
int monkey(int h); //猴子吃桃功能实现函数
int m = 0; //汉诺塔移动的步数
int n; //主界面菜单【function】选择项
void main()
{
n = Main_interface();
do{
switch (n)
{
case 1:
HNT();
break;
case 2:
Main_monkey();
break;
case 3:
break;
case 0:
exit (1);
}
}while (1);
}
int Main_interface()
{
int a;
printf ("\t\t******************欢迎使用“学海无涯”系统******************\n\n");
printf ("【请选择function】\n");
printf ("\t1.实战1(a:汉诺塔的移动)\n\t2.实战2(a:猴子吃桃问题)\n\t3.实战3(a:随机选取范围数\tb:简易计算器)\n\t0.退出系统\n");
scanf ("%d",&a);
do{
if (a <=3&&a >=0)
return a;
else
{
printf ("请重新输入正确的选项!Thanks!\n");
scanf ("%d",&a);
}
}while (1);
system ("pause");
}
void HNT()
{
int num,i = 0,b,c;
do{
do{
printf ("请输入汉诺塔盘子的数目:(1~99)\n");
i++;
if (i != 1)
printf ("请输入正确的数字!\n");
scanf ("%d",&num);
if (num <=99||num >=1)
break;
}while (1);
printf ("*\t移动步数\t操作\n");
Hanoi(num,'a','b','c');
printf ("\n\n\n");
printf ("请问您是否还要进行汉诺塔操作?是请按1,否请按0\n");
scanf ("%d",&b);
if (b == 0)
break;
}while (1);
printf ("返回上级系统请按1,退出系统请按0 \n\n");
scanf ("%d",&c);
if (c == 1)
{
system ("cls");
Main_interface();
}
else
exit (1);
}
void Hanoi(int num,char a,char b,char c )
{
if (num == 1)
printf ("*\t%d\t\t%c-->%c\n",++m,a,c);
else
{
Hanoi(num-1,a,c,b);
printf ("*\t%d\t\t%c-->%c\n",++m,a,c);
Hanoi(num-1,b,a,c);
}
}
void Main_monkey()
{
int d,e; //声明变量吃桃的天数
char g; //选择操作变量
do{
do{
printf ("请输入吃桃的天数:(2~24)\n");
scanf ("%d",&d);
}while (d<=1||d>=25);
e = monkey(d);
printf ("桃子的总数为%d\n\n",e);
printf ("继续实现猴子吃桃请按1,退回上一级请按2,退出系统请按0 \n\n");
g = getche();
fflush(stdin);
if (g == 2)
{
system ("cls");
Main_interface();
}
else if (g == 0)
exit (1);
else if (g == 1)
break;
}while (1);
}
int monkey(int h)
{
int i;
int f = 1;
for (i = 1;i<h;i++)
{
f = (f + 1)*2;
}
return (f);
}