C语言的函数调用问题

#include <stdio.h>
int main(void)
{

​int f(int a);
​int m, n;
​printf("请输入一个数:\n");
​scanf_s("%d", &m);
​for (n = 0; m != 1; n++)
​​m = f(m);
​printf("经角谷定理得经过 %d 次可得到", n);
​return 0;

}

int f(int a)
{
​if (a % 2 == 1)
​​a = a * 3 + 1;
​else
​​a = a / 2;
​return a;
}
输入5得到5 求此函数的详细执行流程 被调用函数的a与主函数完全不相干呀 此函数怎么运行的

被调用函数的a与主函数的m是相互传递的。没有不相干。

循环 ​​m = f(m); 调用f函数把主函数的m的值 传递给 f函数的a,在f函数中改变a的值之后,return a; 又把a的值返回重新赋值给主函数的m。

下次循环又把主函数的m的值 传递给 f函数的a。。。。。。。
这样直到m等于1为止。

img

如有帮助,望采纳!谢谢!

a是函数的形参,当你把m的值传入时,a就相当于m,经过运算后,再把m经过运算后的值给返回