永发信息网

c语言基础程序问题

答案:1  悬赏:0  手机版
解决时间 2021-05-16 14:27
  • 提问者网友:心如荒岛囚我终老
  • 2021-05-15 19:22

int main2()
{
system("cls");
printf("main2()函数执行测试\n");
getch();
}
int guanyu()
{
system("cls");
printf("制作人信息\n");
getch();
}
int main()
{
int i=2;
char c;
system("cls");
gotoxy(1,3);
printf(" 1.开始");
gotoxy(1,6);
printf(" 2.关于");
gotoxy(1,9);
printf(" 3.退出");
gotoxy(1,2);
printf(" ┏━━━┓\n");
printf(" ┃\n");
printf(" ┗━━━┛\n");
gotoxy(35,3);
printf("┃");
xh:for(;;)
{
c=getch();
if(c=='1')
{
gotoxy(1,i);
printf(" \n");
printf(" \n");
printf(" \n");
gotoxy(35,i+1);
printf(" ");
i=2;
gotoxy(1,i);
printf(" ┏━━━┓\n");
printf(" ┃\n");
printf(" ┗━━━┛\n");
gotoxy(35,i+1);
printf("┃");
}
if(c=='2')
{
gotoxy(1,i);
printf(" \n");
printf(" \n");
printf(" \n");
gotoxy(35,i+1);
printf(" ");
i=5;
gotoxy(1,i);
printf(" ┏━━━┓\n");
printf(" ┃\n");
printf(" ┗━━━┛\n");
gotoxy(35,i+1);
printf("┃");
}
if(c=='3')
{
gotoxy(1,i);
printf(" \n");
printf(" \n");
printf(" \n");
gotoxy(35,i+1);
printf(" ");
i=8;
gotoxy(1,i);
printf(" ┏━━━┓\n");
printf(" ┃\n");
printf(" ┗━━━┛\n");
gotoxy(35,i+1);
printf("┃");
i=8;
}
if(c==32)
{
if(i==2)
{
main2();
system("cls");
main();
}
if(i==5)
{
guanyu();
system("cls");
main();
}
if(i==8)
return 0;
}
}
}

为什么执行前两步之后,退出就失灵了?

别重新给我写,有些代码老师没教不能用!!

最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-05-15 19:57

实际不是失灵了,问题出在main()函数的自调用上,也就是递归算法,就像嵌套的for循环一样,总是先把里层的执行完了才轮到外层的。


你这里所谓的失灵,实际上是把里层的main()函数先退出了回到上一次调用main()的那一层,一层层退出,直到回到最初的main()数中,这时再退出,就真的结束了。


你可以实验一下,当你按了3和空格没退出的话,重新按3和空格,反复几次,就退出了。


你也不妨记录一下,main()函数在你的操作中被调用了几次,按我说的方法退出又需要操作几次,比较一下。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯