“中间是有错误,可是为什么我输入1 2 3 4后,输出的也是1 2 3 4; ”
首先你得保证程序是正确的,然后,再去讨论逻辑上的错误,否则,这是没有任何意义的!就好比如初生的婴儿,你得先让他学会走,然后才学会跑
我只指出你程序的错误,逻辑上的错误要靠你自己解决,而且我觉得你能够解决,因为这根本不是问题。
void fun(int *a,int *b,int *c,int *d)
{
int *max;
//max,min均为野指针。这是一个很常见且又隐蔽的错误,同时也是一个很严重的错误,强烈建议你在定义时对指针初始化!
int *min;
//1.想把程序变得简洁是很好的,但是有时候会好心办成坏事,如果你将下面几个语句分开写,或许就能发现你逻辑上的错误。
//2.概念上的不清晰,指针的值为地址,而你的原意是比较它们所指向的变量的值,是否要考虑在前面加上*。
max=a>(b>(c>d?c:d)?b:(c>d?c:d))?a:(b>(c>d?c:d)?b:(c>d?c:d));
min=a<(b<(c<d?c:d)?b:(c<d?d:d))?a:(b<(c<d?c:d)?b:(c>d?c:d));
if((max==a&&min==d)||(max==d&&min=a))
//此处同2,下面亦同
{
*a=max;*b=b;*c=c;*d=min;
}
else {
*b=a;*a=max;*c=d;*d=min;
}
//如果你将程序有条理的写出来,一定能发现这个错误
要记住:程序是写给别人看的,所以尽可能写的清晰一些