110年關務人員四等程式設計概要

四、請仔細觀察下列程式碼,請問 function 之功能為何?(25分)

    #include <stdio.h>

    #include <stdlib.h>

    void function(int* p, int input1, int input2) {

        int* p1;

        int* p2 = p;

        for(p1 = p+input1-1; p1 > p-1; p1--) {

            *(p1+input2) = *p1;

        }

        for(p1 = p+input1; p2 < p+input2; p1++) {

            *p2++ = *p1;

        }

    }

    int main( ) {

        int array[5] = {103, 45, 99, 38, 76};

        int* p1 = array;

        int var1 = 0;

        int var2 = 5;

        int var3 = 2;

        for(p1 = array; p1 < array+var2;) {

            printf("%d, ", *p1++);

        }

        function(array, var2, var3);

        printf("\n");

        for(p1 = array; p1 < array+var2;) {

            printf("%d, ",*p1++);

        }

        return 0;

    }

答:

#include <stdio.h>

#include <stdlib.h>

void function(int* p, int input1, int input2) {

    int* p1;

    int* p2 = p;

    for(p1 = p+input1-1; p1 > p-1; p1--) {

        *(p1+input2) = *p1;

    }

    for(p1 = p+input1; p2 < p+input2; p1++) {

        *p2++ = *p1;

    }

    }

int main( ) {

    int array[5] = {103, 45, 99, 38, 76};

    int* p1 = array;

    int var1 = 0;

    int var2 = 5;

    int var3 = 2;

    for(p1 = array; p1 < array+var2;) {

        printf("%d, ", *p1++);

    }

    function(array, var2, var3);

    printf("\n");

    for(p1 = array; p1 < array+var2;) {

        printf("%d, ",*p1++);

    }

    return 0;

}

執行結果:

103, 45, 99, 38, 76,

38, 76, 103, 45, 99,

說明:

第一個迴圈:

for(p1 = p+input1-1; p1 > p-1; p1--) {

    *(p1+input2) = *p1;

}

p1 指向4

0

1

2

3

4

5

6

103

45

99

38

76

 

76

p1 指向3

0

1

2

3

4

5

6

103

45

99

38

76

38

76

p1 指向2

0

1

2

3

4

5

6

103

45

99

38

99

38

76

p1 指向1

0

1

2

3

4

5

6

103

45

99

45

99

38

76

p1 指向0

0

1

2

3

4

5

6

103

45

103

45

99

38

76

第二個迴圈:

for(p1 = p+input1; p2 < p+input2; p1++) {

    *p2++ = *p1;

}

p1 指向5

0

1

2

3

4

5

6

38

45

103

45

99

38

76

p1 指向6

0

1

2

3

4

5

6

38

76

103

45

99

38

76

 

arrow
arrow
    文章標籤
    關務人員四等程式設計概要
    全站熱搜
    創作者介紹
    創作者 jacksaleok 的頭像
    jacksaleok

    國考資訊處理工作室(高考二級資訊處理/高考三級資訊處理/調查局三等/關務人員三等/地方特考三等)

    jacksaleok 發表在 痞客邦 留言(0) 人氣()