#include <stdio.h>
void sliceShiftLeft(int array[], int start, int end) {
if ( start < end ) {
int temp = array[end];
for ( int i = start + 1; i < end; i++ ) {
array[i] = array[i+1];
}
array[start] = temp;
}
}
int main() {
int start = 2;
int end = 5;
int size = 10;
int array[size];
for ( int i = 0; i < size; i++ ) {
array[i] = i;
}
for ( int i = 0; i < size; i++ ) {
printf("%d ", array[i]);
}
printf("\n");
printf("-------------------------\n");
sliceShiftLeft(array, start, end);
for ( int i = 0; i < size; i++ ) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
问题是 sliceShiftLeft() 函数中的循环。
我需要将 01 2345 6789 转换为 01 5234 6789,但我不断收到 01 5455 6789。
我的步骤:
1)我将 slice 中的最后一个数字放入 temp 2)我运行循环,将 i+1 放入 i 3)我将 temp 中的最后一个数字放在第一位。
我的错在哪里?