107年鐵路特考員級程式設計概要
二、請依據下列 C++ 程式碼執行後,試問輸出結果為何?(25分) #include <stdio.h> #include <stdlib.h> void F(int* p, int n) { int i; for (i = 0; i < n-1; i = i+1) { int tmp = *(p+i+1); *(p+i+1) = *(p+i); *(p+i) = tmp; } } int main( ) { int a[5] = {7, 3, 6, 9, 5}; F(a, 5); for(int i = 0; i <= 4; i++) { printf(“%d\n”, a[i]); } system(“pause”); return 0; } |
答:
輸出結果:
3
6
9
5
7
說明:
void F(int* p, int n) {
int i;
for (i = 0; i < n-1; i = i+1) {
int tmp = *(p+i+1);
*(p+i+1) = *(p+i);
*(p+i) = tmp;
}
}
int a[5] = {7, 3, 6, 9, 5};
0 |
1 |
2 |
3 |
4 |
7 |
3 |
6 |
9 |
5 |
int tmp = *(p+0+1); // int tmp = 3
*(p+0+1) = *(p+0); // 交換 7, 3
0 |
1 |
2 |
3 |
4 |
3 |
7 |
6 |
9 |
5 |
int tmp = *(p+1+1); // int tmp = 6
*(p+1+1) = *(p+1); // 交換 6, 7
0 |
1 |
2 |
3 |
4 |
3 |
6 |
7 |
9 |
5 |
int tmp = *(p+2+1); // int tmp = 9
*(p+2+1) = *(p+2); // 交換 7, 9
0 |
1 |
2 |
3 |
4 |
3 |
6 |
9 |
7 |
5 |
int tmp = *(p+3+1); // int tmp = 5
*(p+3+1) = *(p+3); // 交換 5, 7
0 |
1 |
2 |
3 |
4 |
3 |
6 |
9 |
5 |
7 |