能帮我,看看一个很简单的输出问题
程序代码:
#include<stdio.h> #include<math.h> void fun(int *a,int i,int j){ int t; if(i<j){ t=a[i];a[i]=a[j];a[j]=t; i++;j--; for(i=0;i<4;i++) printf("%2d",a[i]); fun(a,i,j); } } int main(){ int x[]={2,6,1,8},i; fun(x,0,3); for(i=0;i<4;i++) printf("%2d",x[i]); printf("\n"); }
输出:【
8 6 1 2 8 6 1 2
--------------------------------
Process exited after 0.04188 seconds with return value 0
请按任意键继续. . .
】
为什么这里只输出两次不应该是三次嘛,一次是i=0,j=3,i<j 成立;二次是i=1;j=2;i<j成立,并且“ 8 6 1 2”应该变成了“ 8 1 6 2”了呀
而且我把fun函数的for循环注释掉,就能输出“ 8 1 6 2”,如果不注释掉就是上面输出的那种情况,
我把main函数的输出注释掉,只有一次输出,所以总结出来上面的输出应该是fun函数一次输出,main函数一次输出,所以fun函数还有一次输出为什么不执行,只有i<j的时候不执行啊
有人帮我看看这个题目嘛?(如果又是向上次那样是小细节问题没注意到,那真的不好意思)
[此贴子已经被作者于2023-4-4 12:56编辑过]