#include<stdio.h>
int main()
{
int num;
printf("Enter a EVEN Number: ");
scanf("%d",&num);
if (num%2!=0)
{
printf("WRONG INPUT\n\n");
main();
}
printf("EVEN NUMBER ENTERED\n");
}
是否与A C程序如何使用堆栈存储信息有关?或者我错过了一些概念
答案 0 :(得分:0)
当您输入3
作为输入时,if
条件为真,main()
将被第二次调用。
然后你输入了一个偶数作为输入,在这种情况下,控制流不会进入if
的主体,只需打印&#34;即将输入的数字&#34;消息和程序控制退出第二个main()
。
现在控件返回到递归调用main()
的位置,并执行第一个main()
调用的剩余部分,该调用恰好相同&#34;即将输入的数字&#34 ;消息。
有关main()
递归的问题,请参阅this。递归main()
不被认为是好的。
考虑制作另一个函数,然后从main()
调用
int fn()
{
int num;
printf("Enter an EVEN Number: ");
scanf("%d",&num);
if (num%2!=0)
{
printf("WRONG INPUT\n\n");
return fn();
}
printf("EVEN NUMBER ENTERED\n");
}
或者像先前一样使用else
。