解题思路:
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分
87 人评分
#include<stdio.h> int main() { int a,b,t; scanf("%d%d",&a,&b); t=a; a=b; b=t; printf("%d %d",a,b); return 0; }
#include<stdio.h> #define swap(X,Y) X=X^Y,Y=X^Y,X=X^Y int main() { int a, b; scanf("%d %d", &a,&b); printf("%d %d", swap(a, b)); return 0; }
#define Swap(x,y) (t=x,x=y,y=t) //等价于#define Swap(x,y) t=x,x=y,y=t; 这两种写法都能过是为什么,哪位大佬能解释一下吗?
我这个为什么报错了,明明一模一样啊 #include <stdio.h> #include <math.h> #define ans(a,b) temp=a a=b b=temp; int main() { int a,b,temp; scanf("%d %d",&a,&b); ans(a,b); printf("%d %d",a,b); return 0; }
#include <stdio.h> #define Change(a ,b) {int temp = *a; *a = *b; *b = temp;} int main(void) { int data_1 = 0 ,data_2 = 0; scanf("%d%d" ,&data_1 ,&data_2); Change(&data_1 ,&data_2); printf("%d %d\n" ,data_1 ,data_2); return 0; }
会说C语言的萝卜 2023-11-01 14:12:03 |
复杂了 *&data等于data
#include<stdio.h> #define exchange(a, b) printf("%d %d", b, a) int main() { int a, b; scanf("%d %d", &a, &b); exchange(a, b); return 0; } 这样呢
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1033 |
模拟计算器 (C语言代码)浏览:925 |
C语言程序设计教程(第三版)课后习题7.2 (Java代码)浏览:690 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:496 |
字符串比较 (C语言代码)答案错误????浏览:618 |
WU-输出正反三角形 (C++代码)浏览:1045 |
三角形 (C语言代码)浏览:949 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:567 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:569 |
矩阵乘方 (C语言代码)浏览:1059 |