考虑下面的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