1.题目
试定义一个带参数的宏swap(a,b),以实现两个整数之间的交换,并利用它将一维数组a和b的值进行交换。
2.代码
#include<stdio.h>
#define swap(a,b) {int c;c=a;a=b;b=c;}
int main(void)
{
int a[10], b[10];
//输入数组a,b
printf("请输入数组 a:\n");
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]); //输入一组数据到数组a中
}
printf("\n请输入数组 b:\n");
for (int j = 0; j < 10; j++)
{
scanf("%d", &b[j]); //输入一组数据到数组b中
}
//输出数组a,b
printf("\n数组a是:\n");
for (int i = 0; i < 10; i++)
{
printf("%d,", a[i]); //输出数组a的内容
}
printf("\n数组b是:\n");
for (int j = 0; j < 10; j++)
{
printf("%d,", b[j]); //输出数组b的内容
}
//使用宏定义函数swap
for (int i = 0; i < 10; i++)
{
swap(a[i], b[i]); //实现数组a与数组b对应值互换
}
//输出互换后的数组a,b
printf("\n现在数组a是:\n");
for (int i = 0; i < 10; i++)
{
printf("%d,", a[i]); //输出互换后数组a中的内容
}
printf("\n现在数组b是:\n");
for (int j = 0; j < 10; j++)
{
printf("%d,", b[j]); //输出互换后数组b中的内容
}
return 0;
}
3.个人见解
1.对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替#define命令行中的形参。
2.在宏定义时,在宏名与带参数的括号之间不可以加空格,否则将空格以后的字符都作为替代字符串的一部分。
3.在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义。
4.输出结果截图
5.相关下载
关于前43道例题的源码,题目,输出结果截图均在下方下载地址中。
https://download.csdn.net/download/mosi357/12283097