11.29 小白的每日一C
本帖最后由 吾爱姚吕婧妍 于 2018-11-29 21:51 编辑有点水 尴尬了
带参数的宏定义
//
#include<stdio.h>
#define MAX(a,b) a>b?a:b //主要讲讲这里
#define DOUBLE(a) (a)*(a)
int main()
{
int x,y;
printf("Into two number : ");
scanf("%d %d",&x,&y);
x=MAX(x,y);
y=DOUBLE(x);
printf("%d %d",x,y);
return 0;
}
/*a>b?a:b
这个其实就是一个条件判断
a>b 相当于 if(a>b)
?a:b 相当于成立 return a 、、不成立 return b
#define DOUBLE(a) (a)*(a) 中
<1>(a)*(a)与<2>a*a 的区别在于
如果是 <2> 当输入的值为x+y时 结果就是 x+y*x+y
如果是 <1> 当输入的值为x+y时 结果就是 (x+y)*(x+y)
计算结果有所不同*/
/*练习10-2 请完成下列宏定义
1.MIN(a,b) 求a,b的最小值
#define MAX(a,b) a>b?a:b
2.ISLOWER(c) 判断c是否为小写字母
#defineISLOWER(c) (((c)>='a')&&((c)<='z'))
3.ISEAP(y) 判断y是否为闰年
#define ISESAP(y) ((0==(y)%4)&&(0 !=(y)%100)) ||(0 ==(y)%400)
4.CIRFER(r) 计算半径为r的圆周长
#define CIRFER(r) 3.14*r
练习10-3 分别用函数和带参宏实现从3个数中找出最大数,请比较两者在形式上和使用上的区别。
#define EMAX(a,b) a>b?a:b
#define MAX(a,c)a>c?a:c
// 答案为 MAX(x,y,z) x>=y?(x>=z?x:z):(y>=z?y:z)
int max(int a,int b,int c)
if(a>b)
{
if(a>c)
return a;
else
return c;
}
else
{
if(b>c)
return b;
else
return c;
}
*/
坚持,总有一天会看到结果的 主要是记住宏是文本级的代码替换就行了,最后的比较函数和宏的区别,用i++当参数就可以知道了{:301_998:} 共同加分 虽然很基础,但坚持下去就是好的。 吾之黯然神伤 发表于 2018-11-29 21:48
共同加分
好的 大家一起加油 共同进步 bigDreamer_ 发表于 2018-11-29 21:50
虽然很基础,但坚持下去就是好的。
谢谢谢谢 感谢鼓励{:301_993:} 坚持下去就是好的 学习学习一起进步 哎,看到你......有点惭愧了,我已经好长时间没有编程了,还是应该要坚持呀,向你学习 初学者表示还没有看懂,目前还在学数据结构。 同上,哈哈,我也正在学习数据结构中,共同进步。。{:1_893:}
页:
[1]
2