吾爱姚吕婧妍 发表于 2018-11-29 21:37

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;
}



*/

张啊啊 发表于 2018-11-30 08:37

坚持,总有一天会看到结果的

iamshy520 发表于 2018-11-30 22:04

主要是记住宏是文本级的代码替换就行了,最后的比较函数和宏的区别,用i++当参数就可以知道了{:301_998:}

吾之黯然神伤 发表于 2018-11-29 21:48

共同加分

bigDreamer_ 发表于 2018-11-29 21:50

虽然很基础,但坚持下去就是好的。

吾爱姚吕婧妍 发表于 2018-11-29 21:51

吾之黯然神伤 发表于 2018-11-29 21:48
共同加分

好的 大家一起加油 共同进步

吾爱姚吕婧妍 发表于 2018-11-29 21:52

bigDreamer_ 发表于 2018-11-29 21:50
虽然很基础,但坚持下去就是好的。

谢谢谢谢 感谢鼓励{:301_993:}

a1905 发表于 2018-11-29 21:59

坚持下去就是好的

大鱼爱吃猫 发表于 2018-11-29 22:43

学习学习一起进步

JulyAD 发表于 2018-11-29 23:11

哎,看到你......有点惭愧了,我已经好长时间没有编程了,还是应该要坚持呀,向你学习

anoth 发表于 2018-11-29 23:37

初学者表示还没有看懂,目前还在学数据结构。

lq636594 发表于 2018-11-30 00:16

同上,哈哈,我也正在学习数据结构中,共同进步。。{:1_893:}
页: [1] 2
查看完整版本: 11.29 小白的每日一C