【例7-7】用带参数的宏定义代替公式型函数

公式型函数:通过一个公式表达式来求得函数返回值的函数。如:z = x > y ? x : y;    S = πr^2
可以用带参数宏定义代替该公式型的函数。
(一)带参宏定义的一般形式
#define 宏名(形参列表) 字符串
1.宏名一般用大写字母表示。
2.形参有多个时,各参数间用[英]逗号隔开形参不分配内存单元,因此不必作类型定义
3.字符串中要用到形参列表中所有的形参

(二)带参宏调用的一般形式
宏名(实参列表);
1.实参可以是常量、变量、表达式,但必须有具体的值;且实参数量要和形参一一对应。
2.在宏调用时,对实参表达式不作计算,而是直接用实参原样代替形参,然后再计算其构成的
  新字符串表达式,即"先原样替换,然后再计算"
3.因为"先原样替换,然后再计算"的特点,字符串中的形参通常用括号括起来避免出错。
  如:#define L(r) 2*PI*r    假如输入的实参是r+2,那替换时就会变成 2*PI*r+2

//带参数的宏定义演示1
用带参数的宏定义求两个数的最大值

#include<stdio.h>
#define MAX(x,y) x>y?x:y
int main()
{
	int a, b, c;
	printf("请输入两个整数:");
	scanf_s("%d%d", &a, &b);
	c = MAX(a, b);
	printf("最大值为:%d", c);

	return 0;
}

//带参数的宏定义演示2
用带参数的宏定义计算圆的周长 

#include<stdio.h>
#define PI 3.14
#define L(r) 2*PI*(r)
int main()
{
	double r, c;
	printf("请输入圆的半径:");
	scanf_s("%lf", &r);
	c = L(r);
	printf("圆的周长为:%.2lf", c);

	return 0;
}

//随堂练习7-4
1.用带参数的宏定义求圆的面积

#include<stdio.h>
#define PI 3.14
#define S(r) PI*(r)*(r)
int main()
{
	double r, s;
	printf("请输入圆的半径:");
	scanf_s("%lf", &r);
	s = S(r);
	printf("圆的面积为:%.2lf", s);

	return 0;
}

 2.用带参数的宏定义计算自然数之和

#include<stdio.h>
#define S(n)	n*(1+n)/2
int main()
{
	int a, s;
	printf("计算n以内的自然数列之和,请输入n的值:");
	scanf_s("%d", &a);
	s = S(a);
	printf("该自然数列之和为:%d", s);

	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值