hdu2056(关于形参与实参的错误)

#include<stdio.h>
/*void swap(double a,double b){ 这里如果这样用的话只会改变形参的值,不会改变形参的值
double temp;
temp=a;
a=b;
b=temp;
}*/
double max(double a,double b){
if(a>b)
return a;
else
return b;
}
double min(double a,double b){
if(a<b)
return a;
else
return b;
}
int main(){
double x1,y1,x2,y2,x3,y3,x4,y4,temp;
while(scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF){
    if(x1>x2)  {temp=x1;x1=x2;x2=temp;}//swap(x1,x2);
    if(x3>x4) {temp=x3;x3=x4;x4=temp;}//swap(x3,x4);
    if(y1>y2) {temp=y1;y1=y2;y2=temp;}//swap(y1,y2);
    if(y3>y4) {temp=y3;y3=y4;y4=temp;}//swap(y3,y4);
    x1=max(x1,x3);
    y1=max(y1,y3);
    x2=min(x2,x4);
    y2=min(y2,y4);
    printf("%.2lf\n",x1>x2||y1>y2?0.00:(x2-x1)*(y2-y1));
}
return 0;}

做这道题的时候我答案出来了,但是去杭电的时候WA,原因在于swap函数那里,形参的改变不会影响实参的改变,所以要么用指针(指针这里形参与实参这里也要注意,要交换地址,交换值没有用),要么去掉swap函数,直接交换

猜你喜欢

转载自blog.csdn.net/xdyzengqian/article/details/79667795