考虑以下 C 程序片段。假设 swap(&x, &y) 交换 x 和 y 的内容。
int main()
{
int array[] = {3, 5, 1, 4, 6, 2};
int done = 0;
int i;
while (done == 0)
{
done = 1;
for (i = 0; i <= 4; i++)
{
if (array[i] = 1; i--)
{
if (array[i] > array[i-1])
{
swap(&array[i], &array[i-1]);
done = 0;
}
}
}
printf("%d", array[3]);
}
程序的输出是_____。
注意:此问题显示为数字答案类型。
(一) 1
(乙) 2
(三) 3
(四) 4答案: (C)
说明: for循环执行后,数组内容:
第一次: 5 3 4 6 2 1
第二次: 6 5 4 3 2 1
第三次: 6 5 4 3 2 1
现在,当 while 循环再次执行时, done = 1 和第一个和第二个 for 循环,如果条件不满足。
因此,最终arr[3]的值=3,选项C是正确的。
请参阅此以了解更多信息:
#include
void swap(int *t, int *x)
{
int m;
m = *t;
*t = *x;
*x = m;
}
int main()
{
int array[] = {3, 5, 1, 4, 6, 2};
int done = 0;
int i;
while (done == 0)
{
done = 1;
for( i = 0; i <= 4; i++)
{
if(array[i] < array[i+1])
{
swap(&array[i], &array[i+1]);
done = 0;
}
}
for (i = 5; i >= 1; i--)
{
if( array[i] > array[i-1])
{
swap(&array[i], &array[i-1]);
done = 0;
}
}
}
printf("%d", array[3]);
}
这个问题的测验