C語言方法的使用練習


[例8.3] 帶參數(shù)的宏的使用
#define MUL(a,b)? a*b
main()
{ float x1,x2,x3;
x1=MUL(2,5); /* 行1* /
x2=MUL(2+3,6-2); /* 行2 */
x3=1.0/MUL(2,5); /* 行3 */
printf("x1=%f,x2=%f,x3=%f\n",x1,x2,x3);
}

[例8.4] 帶參數(shù)的宏與函數(shù)的比較
#define Abs1(a)? (a)>=0?(a):-(a)
int Abs2(int a)
{? return a>=0?a:-a;
}
main()
{ int x=-1,y=-1;
printf("%d? ",Abs1(x++));
printf("%d\n",Abs2(y++));
printf("%d? %d\n",x,y);
}

[例8.5] 條件編譯
#define? TC? 1
main()
{
#if? TC
printf("The Turbo2 C V2.0\n");
#else
printf("The Microsoft C V6.0\n");
#endif
}
#undef TC

[例9.1] 通過指針變量存取變量的值。
main()
{ int a,b;
int *p1,*p2;
a=10; b=20;
p1=&a; p2=&b;
printf("a=%d,b=%d\n",a,b);
printf("*p1=%d,*p2=%d\n",*p1,*p2);
}

[例9.2] 輸入a和b兩個數(shù),按先大后小的順序輸出,a和b的值不變。
main()
{ int a,b,*p1,*p2,*p;
scanf("%d,%d",&a,&b);
p1=&a;? p2=&b;
if(a<b)
{ p=p1; p1=p2; p2=p; }
printf("a=%d,b=%d\n",a,b);
printf("Max=%d,Min=%d\n",*p1,*p2);
}

[例9.3] 用函數(shù)實現(xiàn)兩個變量的交換
void swap(int *p1,int *p2)
{ int t;
t=*p1; *p1=*p2; *p2=t;
}
main()
{ int a=5,b=9;
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
}

[例9.4] 把兩個數(shù)中的最大值設(shè)為0
int *max(int *q1,int *q2)
{? return *q1 > *q2 ? q1 : q2;
}
main()
{ int x,y,*p;
scanf("%d,%d",&x,&y);
printf("x=%d,y=%d\n",x,y);
p=max(&x,&y);
*p=0;
printf("x=%d,y=%d\n",x,y);
}

