C语言方法的使用练习


[例8.3] 带参数的宏的使用
#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] 带参数的宏与函数的比较
#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两个数,按先大后小的顺序输出,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] 用函数实现两个变量的交换
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] 把两个数中的最大值设为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);
}

