题目:编程实现数组元素的移动。设数组有10个元素,输入一个数x,把数组的第x位置的元素删除,后面的元素依次前进一位,重复若干次这样的删除,得到最后的结果
//输入格式:第一行输入10个数组元素,均为整数,用空格隔开,
// 第二行输入一个数k表示,需要进行k次删除,接下来k行每行一个数x,表示要删除第x个元素
//
//输出格式:输出经过k次删除后的数组,每两个元素之间用空格隔开
//例如:输入 1 2 3 4 5 6 7 8 9 10
// 输入 3(x)
// 输入 4 删除第4个元素
// 输入 2
// 输入 6
// 输出:1 3 5 6 7 9 10
#include<stdio.h>
void DeleteArr_n(int* arr, int n, int length);
int main() {
int arr[10] = { 0 };
int delete_num, num_value;
printf("请输入十个数字:\n");
for (int i = 0; i < 10; i++) {
scanf_s("%d", &arr[i]);
}
printf("请输入要删除的次数:\n");
scanf_s("%d", &delete_num);
for (int i = 0; i < delete_num; i++) {
printf("请输入删除的位置(1-%d):\n", 10 - i);
scanf_s("%d", &num_value);
if (num_value < 1 || num_value > 10 - i) {
printf("无效的位置!\n");
continue;
}
DeleteArr_n(arr, num_value, 10 - i);
}
for (int i = 0; i < 10 - delete_num; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void DeleteArr_n(int* arr, int n, int length) {
if (n < 1 || n > length) return;
n--;
for (int i = n; i < length - 1; i++) {
arr[i] = arr[i + 1];
}
}