【发布时间】:2015-05-05 04:19:06
【问题描述】:
这是我的计算机科学期末学习指南中的一个问题。正确答案是 x[2] = 7 和 x[4] = 4。当我尝试解释代码时,似乎 x[2] 的值甚至没有被 sort 函数改变。但它是!有人可以解释为什么 x[2] = 7 和 x[4] = 4 吗?谢谢!
#include<stdio.h>
#define SIZE 10
void sort(int[], int);
int main()
{
int x[SIZE] = {2, 4, 6, 8, 1, 3, 5, 7, 9, 0};
sort(x, -1);
printf("x[2] = %d\n", x[2]);
sort(x, 1);
printf("x[4] = %d\n", x[4]);
return(0);
}
void sort(int x[], int dir)
{
int i;
int j;
int temp;
for(i = 1; i < SIZE; i++)
{
for(j = SIZE - 1; j >= i; j--)
{
if(dir == -1 && x[j] > x[j - 1] || dir == 1 && x[j] < x[j - 1])
{
temp = x[j - 1];
x[j - 1] = x[j];
x[j] = temp;
}
}
}
}
【问题讨论】: