大门|大门-CS-2017(第二组)|问题47

考虑下面的C程序片段。假设交换(&x,&y)交换x和y的内容。

null
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]);
}

该程序的输出为。 注:该问题以数字答案形式出现。 (A) 1. (B) 2. (C) 3. (D) 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 <stdio.h>
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]);
}


这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享