C语言函数一题

来源:百度知道 编辑:UC知道 时间:2024/06/20 04:15:24
void func1(int i)
void func2(int i)
char st[]="hello,friend!";
void func1(int i)
{printf("%c",st[i]);
if(i<3){i+=2;func2(i);}}
void func2(int i)
{printf("%c",st[i]);
if(i<3){i+=2;func1(i);}}
main()
{int i=0;func1(i);printf("\n");}
A.hello B.hel C.hlo D.hlm
这题十分之混乱,怎么做呢?

C

{int i=0;func1(i);//进入func1(0)
void func1(int i) //这时i=0
{printf("%c",st[i]); //输出st[0];即h
if(i<3){i+=2;func2(i);}} 这时i<3,i=i+2,即i=2,进入func2(2)
void func2(int i)
{printf("%c",st[i]); //输出st[2],即l
if(i<3){i+=2;func1(i);}} //i<3,i=i+2,即i=4,进入func1(4)
{printf("%c",st[i]); //输出st[4];即o
if(i<3){i+=2;func2(i);}} 这时i>3,不满足条件,向下走,函数调用结束
printf("\n");} //输出回车

调用 fun1 时,首先输出字母 st[0],即字母 h

接着 i变为2,传给 func2,输出字母st[2],即字母 l

再接着, i 因为 还小于 3,在 fun2 中调用了 func1 ,此时 i 变为 4,

这时输出字母 st[4],即o

最后,两个 i > 3 了,函数退出

结果输出 hlo

答案选 C

答案:C
i=0,调用func1函数,先打印一个h,i<3进入if语句,i变为2,把2传给func2函数,打印第2个字母l(从0开始的,h是0,e是1),此时i仍然小于3进入fun2的if语句,i变为4,传给func1函数,打印第4个字母o,而此时i=4>3不执行if 语句,跳出返回到主函数打印一个换行
所以选C

答案是C! st[0]=h;st[1]=e...st[4]=o...
主函数 i=0;
调用了Fun1(i=0)
输出 st[0]=h