使用宏定义实现数组值的互换

1 题目

功能:使用宏定义实现数组值的互换

描述:定义一个宏 swap(a, b),以实现两个整数的交换,并利用它将一维数组 a 和 b 进行交换

2 思路

宏关于函数的运用
一般形式:

#define 宏名(参数表) 字符串函数定义
  • 对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替 #define 命令行中的形参
  • 在宏定义时,在宏名与带参数的括号之间不可以加空格,否则将空格以后的字符都作为替代字符串的一部分
  • 在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义

3 代码

#include  
#define N 10
#define swap(a, b) {int temp; temp=a;a=b;b=temp;} // 宏swap(a,b)进行两个整数的交换

/**
功能:使用宏定义实现数组值的互换
描述:定义一个宏 swap(a, b),以实现两个整数的交换,并利用它将一维数组 a 和 b 进行交换
**/

int main(int argc, char const *argv[]) { 
    int a[N], b[N];
    printf("请输入一个数组a:\n");
    for (int i = 0; i < N; ++i) {
        scanf("%d", a+i);
    }
    printf("请输入一个数组b:\n");
    for (int i = 0; i < N; ++i) {
        scanf("%d", b+i);
    }

    printf("数组a的内容是:\n");
    for (int i = 0; i < N; ++i) {
        printf("%d ", *(a+i));
    }
    printf("\n");
    printf("数组b的内容是:\n");
    for (int i = 0; i < N; ++i) {
        printf("%d ", *(b+i));
    }

    // 交换数组a 和 数组b的内容
    for (int i = 0; i < N; ++i) {
        swap(*(a+i), *(b+i));
    }

    printf("\n");
    printf("交换后数组a的内容是:\n");
    for (int i = 0; i < N; ++i) {
        printf("%d ", *(a+i));
    }
    printf("\n");
    printf("交换后数组b的内容是:\n");
    for (int i = 0; i < N; ++i) {
        printf("%d ", *(b+i));
    }
}

示例结果:

$ gcc ex038.c -o demo
$ ./demo
请输入一个数组a:
1
3
5
7
9
11
13
15
17
19
请输入一个数组b:
2
4
6
8
10
12
14
16
18
20
数组a的内容是:
1 3 5 7 9 11 13 15 17 19
数组b的内容是:
2 4 6 8 10 12 14 16 18 20
交换后数组a的内容是:
2 4 6 8 10 12 14 16 18 20
交换后数组b的内容是:
1 3 5 7 9 11 13 15 17 19

你可能感兴趣的:(使用宏定义实现数组值的互换)