您的位置:首页 > 编程语言

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

2015-06-25 19:48 1251 查看
在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

根据结果比较可以看出,我们的程序基本是实现了要求的功能!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: