题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
123456789101112131415161718192021222324252627282930313233343536373839 | #include <stdio.h>void Insert(int* arr, int input){ int i=0; if (arr[8]>input) { for (i=0; i<10; i++) { if (arr[i]>input) { int j; for (j=9; j>i; j--) { arr[j] = arr[j-1]; } arr[i] = input; break; } } } else { arr[9] = input; }} int main(){ int arr[10] = {111,222,333,444,555,666,777,888,999}; int input; printf("请输入要插入的数字:->"); scanf("%d",&input); Insert(arr,input); int i; for (i=0; i<10; i++) { printf("%d ",arr[i]); } return 0;} |
123456789101112131415161718192021222324252627282930313233343536373839 | #include <stdio.h>#define ARR_LENGTH 10void Insert(int* arr, int input){ int i=0; if (arr[ARR_LENGTH-2]>input) { for (i=0; i<ARR_LENGTH; i++) { if (arr[i]>input) { int j; for (j=ARR_LENGTH-1; j>i; j--) { arr[j] = arr[j-1]; } arr[i] = input; break; } } } else { arr[ARR_LENGTH-1] = input; }}int main(){ int arr[ARR_LENGTH] = {111,222,333,444,555,666,777,888,999}; int input; printf("请输入要插入的数字:->"); scanf("%d",&input); Insert(arr,input); int i; for (i=0; i<ARR_LENGTH; i++) { printf("%d ",arr[i]); } return 0;} |