|
发表于 2018-3-14 21:34:56
|
显示全部楼层
本楼为最佳答案
参考下:- #include <stdio.h>
- #define MAXSIZE 15
- int move(int num[], int ci, int cnum)
- {
- int i;
- cnum++;
- for(i=cnum; i>ci; i--)
- {
- num[i] = num[i-1];
- }
- return cnum;
- }
- int insert(int num[], int n, int cnum)
- {
- int i;
- if(cnum < MAXSIZE) // 判断是否超出数组的最大容量
- {
- if (n >= num[cnum-1])// 如果待插入的数比最后一个数大或相等,则直接插入到最后
- {
- num[cnum] = n;
- cnum++; // 数组元素个数 +1
- }
- else
- {
- for(i=0; i<cnum; i++)
- {
- if(n < num[i])
- {
- cnum = move(num, i, cnum); // 移动数组后面的元素
- num[i] = n;
- break;
- }
- }
- }
- }
- else
- {
- printf("数组已满,无法执行插入操作~!!!\n\n");
- }
- return cnum;
- }
- void print(int num[], int cnum)
- {
- int i;
- for(i=0; i<cnum; i++)
- {
- printf("%d ", num[i]);
- }
- printf("\n");
- }
- int main(void)
- {
- int num[MAXSIZE] = {1,2,3,4,5,6,7,8,9};
- int n;
- int cnum = 9; // 用于存入数组元素的个数
- while(1)
- {
- printf("请输入个整数:");
- scanf("%d", &n);
- cnum = insert(num, n, cnum);
- print(num, cnum);
- printf("当前数组元素的个数是:%d 个\n", cnum);
- }
- }
复制代码 |
|