解题思路:
C语言中的宏允许带有参数,包含形参和实参,在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,无参宏的宏名后不带参数,其定义的一般形式为:
#define 标识符 字符串; 例如#define m a*b;
其中a*b的值就是m,在主函数中m就是调用a*b;
带参宏定义的一般形式为:
#define 宏名(形参表) 字符串;
在字符串中含有各个形参。
带参宏调用的一般形式为:
#define y(a,b) t=a,a=b,b=t;
宏名(实参表),其中a,b就是实参,通过在主函数中输入,然后通过宏定义的预处理,也就是后面的字符串(t=a,a=b,b=t)来运算,在主函数中得到调用。
注意事项:
一般我们在定义宏的时候要根据形参和实参的需要来选择,该题中我们要运用到实参
参考代码:
#include <stdio.h> #include <math.h> #define chang(a,b) t=a,a=b,b=t; int main() { int a,b,t; scanf("%d %d",&a,&b); chang(a,b); printf("%d %d",a,b); return 0; }
如果有不懂的,欢迎评论,我们一起讨论;
另外这里我把宏定义的一些解释链接到这:宏定义
0.0分
86 人评分
这个chang(a,b)可以换成 y(a,b)吗
GC 2019-01-16 17:23:49 |
可以,作为练习简洁一点,但长时间用没有意义的名称,不是一个好习惯。
题目:定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。 评论:题目出得不严谨。这两个参数没有指明是整数或者浮点数之类的,给的示例只是整数。需要考生通过示例来反推题目的含义,或者说示例压缩了题目表征的范围。这不是严谨的做法。
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1049 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:662 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:902 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:756 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:661 |
C二级辅导-阶乘数列 (C语言代码)浏览:692 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:616 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:787 |
1642题解浏览:716 |
剪刀石头布 (C语言代码)浏览:1436 |
GC 2019-01-16 17:22:12 |
那个没用,不用管。
Sapphire 2022-01-18 21:32:21 |
的确用不上