4.png

    1. /*
    2. 从顺序表中删除给定区间s~t之间的值,若给定区间不合理或顺序表为空,则显示错误信息并退出
    3. */
    4. #define _CRT_SECURE_NO_WARNINGS
    5. #include <stdio.h>
    6. void deletePoint(int *arr, int s, int t, int len) {
    7. int k = 0, i = 0;
    8. for (i = 0; i < len && *(arr + i) < s; i++);//找到第一个大于等于s的元素
    9. if (i >= len) return;
    10. for (k = i; k <= len && *(arr + k) <= t; k++);//找到第一个大于t的元素
    11. for (; k < len; i++, k++) *(arr + i) = *(arr + k);
    12. printf("当前数组为:");
    13. for (int j = 0; j < i; j++) printf("%d ", *(arr + j));
    14. }
    15. int main() {
    16. int arr[] = { 1,2,4,6,10,15 };//也可以由用户输入
    17. int s, t;//用于给定区间范围
    18. int len = sizeof(arr) / sizeof(int);
    19. printf("请输入区间范围,s<t\n");
    20. do {
    21. printf("s=");
    22. scanf("%d", &s);
    23. printf("t=");
    24. scanf("%d", &t);
    25. } while (s > t);
    26. deletePoint(arr, s, t, len);
    27. return 0;
    28. }