第一次发博客,新手初试啊,题目如下:有两个10个元素的数组,分别为A和B,编程实现相同位置的元素, 如果 B 的元素小于 A 的元素进行数值交换:(使用回调函数实现)

来源:互联网 发布:淘宝网家居拖鞋 编辑:程序博客网 时间:2024/05/20 17:27

在main主函数中函数调用

    int a[10] = {0};
    int b[10] = {0};
    randomArray(a, 10);    //随机值
    randomArray(b, 10);    //随机值
    
    changeBiger(a, b, sizeof(a) / sizeof(int), changeValue); //数值比较交换
    printf("数值交换后\n");
    for (int i = 0; i < 10; i++) {
        printf("%d ",a[i]);
    }
    printf("\n");
    for (int i = 0; i < 10; i++) {
        printf("%d ",b[i]);
    }
    printf("\n");


函数中涉及到的函数定义:

void randomArray(int a[], int count) //随机生成元素
{
    for (int i = 0; i < count; i++) {
        a[i] = arc4random()% 21 + 20;  //随机范围[20,40]
        printf("%d ",a[i]);
    }
    printf("\n");
}
void changeValue(int *p1, int *p2)  //数值比较交换
{
    if (*p1 > *p2) {
        int c = *p1;
        *p1 = *p2;
        *p2 = c;
    }
}
void changeBiger(int a[], int b[],int count, CHANGE p)  //使用回调函数
{
    for (int i = 0; i < count; i++) {
        p(&a[i], &b[i]);
    }
}

程序执行结果为:

36 38 32 27 33 22 29 32 27 24
30 39 38 25 39 28 27 40 40 26
数值交换后

30 38 32 25 33 22 27 32 27 24
36 39 38 27 39 28 29 40 40 26

根据结果比较可以看出,我们的程序基本是实现了要求的功能!

0 0
原创粉丝点击