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

在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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值