为什么输入-5,但是结果是0啊,不应该是1吗?
写出以下程序段的运行结果。请注意,直接填数字,前后不要加空格等任何其他字符。
int i, n = 5, x;
int a[10] = {1, 3, 5, 7, 9};
scanf("%d", &x);
for (i = n-1; i >= 0; i--){
if(x < a[i]) a[i+1] = a[i];
else break;
}
a[i+1] = x;
n++;
printf("%d ", i+1);
为什么输入-5,但是结果是0啊,不应该是1吗?
写出以下程序段的运行结果。请注意,直接填数字,前后不要加空格等任何其他字符。
int i, n = 5, x;
int a[10] = {1, 3, 5, 7, 9};
scanf("%d", &x);
for (i = n-1; i >= 0; i--){
if(x < a[i]) a[i+1] = a[i];
else break;
}
a[i+1] = x;
n++;
printf("%d ", i+1);
程序中的循环是在寻找一个合适的插入位置,如果输入的数小于数组中的某一个元素,则该元素后移,直到找到一个比输入数大的元素为止。如果输入的数比数组中所有元素都小,则程序会执行完循环后退出,并将新的数插入到数组的第一个位置。
所以在这里,如果输入的数是-5,那么循环会执行完后退出,因为数组中的所有元素都大于-5。因此,插入位置是数组的第一个位置,也就是下标为0,所以输出0。