首页 > 代码库 > DAY-12作业

DAY-12作业

//

//  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;

}

 

DAY-12作业