//
// main.m
// DAY-12作业
//
// Created by lanouhn on 15/1/28.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
void randomFun(int *p, int n);
void randomFun(int *p, int n) {
//可以怎么初始化指针p???
for (int i = 0; i < n; i++) {
*(p + i) = arc4random() % 101;
}
}
void findNum(int *p, int n);
void findNum(int *p, int n) {
*(p + n) = 0;
}
typedef void (*Find)(int *p, int n);
void modify(int *p, int n, Find p1);
void modify(int *p, int n, Find p1) {
for (int i = 0; i < n; i++) {
if (*(p + i) % 3 == 0) {
p1(p, i);
}
}
}
void changeFun(int *p, int *p1, int n);
void changeFun(int *p, int *p1, int n) {
int temp = *(p + n);
*(p + n) = *(p1 + n);
*(p1 + n) = temp;
}
typedef void (*Change)(int *p, int *p1, int n);
void compareFun(int *p1, int *p2, int n, Change ch);
void compareFun(int *p1, int *p2, int n, Change ch) {
for (int i = 0; i < n; i++) {
if (*(p1 + i) > *(p2 + i)) {
ch(p1, p2, i);
}
}
}
void printFun(int *p, int n);
void printFun(int *p, int n) {
for (int i = 0; i < n; i++) {
printf("%3d ", *(p + i));
}
printf("\n");
}
int main(int argc, const char * argv[]) {
// 1.(***)随机生成一个 10 个元素的数组,找到 3 的倍数,并将其值修改成 0.(注意:修改数值使用回掉函数处理)
// 2. (***)有两个10个元素的数组,分别为A和B,编程实现相同位置的元素, 如果 B 的元素小于 A 的元素进行数值交换:(使用回调函数实现)
//1.
// int array[10] = {0};
// randomFun(array, 10);
// printFun(array, 10);
// modify(array, 10, findNum);
// printFun(array, 10);
//2.
int A[10] = {0}, B[10] = {0};
randomFun(A, 10);
printFun(A, 10);
randomFun(B, 10);
printFun(B, 10);
compareFun(A, B, 10, changeFun);
printf("交换后:\n");
printFun(A, 10);
printFun(B, 10);
return 0;
}