解题思路:

注意事项:

参考代码:

#include <stdio.h>


int main() 

{

    int arr[100];

    int num;    //需要插入的数

    int a = 0;


    // 循环读取数字,直到遇到换行符或输入结束

    while (scanf("%d", &arr[a]) == 1) {

        a++;

        // 检查是否是换行符,如果是则退出循环

        if (getchar() == '\n') {

            break;

        }

    }

    scanf("%d", &num);

    

    /*

    方法一:新建数组

     1.定义原数组arr、插入元素num,计算原数组长度n

     2.定义新数组new_arr,大小n+1 

     3.找到插入位置

     4.剩下元素复制过去

     5.打印新数组

     */


    /*

    int new_arr[10];

    int i = 0, j = 0;


    while (i < 9 && arr[i] < num)

    {

        new_arr[j] = arr[i];

        i++;

        j++;

    }


    new_arr[j] = num;

    j++;


    while (i < 9 && arr[i] > num)

    {

        new_arr[j] = arr[i];

        i++;

        j++;

    }


    for (int k = 0; k < 10; k++)

    {

        printf("%d\n", new_arr[k]);

    }

    */


     /*方法二:数组插入(动态分配)

     1.定义数组arr、有效元素个数n、要插入元素num

     2.找到插入位置pos

     3.插入位置的数和后面的数都往后移一位

     4.插入

     5.打印

     */

    int n = 9;  //有效元素个数

    int pos = 0;    //插入位置


    while (pos < n && arr[pos] < num)

    {

        pos++;

    }


    for (int i = n; i > pos; i--)

    {

        arr[i] = arr[i-1];

    }


    arr[pos] = num;


    for (int j = 0; j < n+1; j++)

    {

        printf("%d\n", arr[j]);

    }


    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论