私信TA

用户名:1678463512

访问量:7283

签 名:

等  级
排  名 2703
经  验 2105
参赛次数 0
文章发表 20
年  龄 20
在职情况 待业
学  校 秋长中学
专  业

  自我简介:

解题思路:num为要插入的值,当nums[i] && num < nums[i+1]时,num要放在中间的位置,从nums[i+1]个元素到最后一个元素都向后移一位,当num大于数组最后一个元素,则num要放在最后,当num小于数组第一个元素,则numnum要放在第一位,数组中所有元素都向后移一位
注意事项:

这是升序的代码,降序同理

参考代码:

//已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

    int result,num,i,count = 9 - 1,j;

    int nums[100];

    int a = 9;

    for(i = 0;i < a;i++)//循环录入数组元素

    {

        result = scanf("%d",&nums[i]);

        while(result != 1)//当用户的输入不为数字类型

        {

            scanf("%*s");//清空缓冲区

            result = scanf("%d",&nums[i]);//重新赋值

        }

    }


    scanf("%d",&num);//录入num

    for(i = 0;i < a;i++)

    {


        if(num == nums[i] || num > nums[i] && num < nums[i+1] )

        {//如果用户输入的数字等于数组里的某个元素或者num>nums[i]并且小于nums[i+1]


            while(count > i)//当num>i是停止后移

            {

                nums[count+1] = nums[count];

                count--;//数组中原来的所有元素都往后移一位

            }

            nums[i+1] = num;

            break;

        }

        if(num > nums[a-1] )//用户输入的值最大,放到数组最后面

        {

            nums[a] = num;

            break;

        }

        if(num < nums[0])//用户输入的值最小,放在第一位

        {

            while(count >= 0)//数组中原来的所有元素都往后移一位

            {

                nums[count+1] = nums[count];

                count--;

            }

            nums[0] = num;//用户输入的数字放在第一位

            break;

        }


    }

    a++;


    for(i = 0;i < a;i++)

    {

        printf("%d\n",nums[i]);

    }




2,指针

int result,num,i,count = 9 - 1,j;

    int nums[100];

    int a = 9;

    int *p = nums;

    for(i = 0;i < a;i++)//循环录入数组元素

    {

        result = scanf("%d",p+i);

        while(result != 1)

        {

            scanf("%*s");

            result = scanf("%d",p+i);

        }

    }


    scanf("%d",&num);//录入num

    for(i = 0;i < a;i++)

    {


        if(num == *(p+i) || num > *(p+i) && num < *(p+i+1) )

        {//如果用户输入的数字等于数组里的某个元素或者num>nums[i]并且小于nums[i+1]


            while(count > i)//当num>i是停止后移

            {

                //nums[count+1] = nums[count];

                *(p+count+1) = *(p+count);

                count--;//数组中原来的所有元素都往后移一位

            }

            //nums[i+1] = num;

            *(p+i+1) = num;

            break;

        }

        if(num > /*nums[a-1]*/ *(p+a-1) )//用户输入的值最大,放到数组最后面

        {

            //nums[a] = num;

            *(p+a) = num;

            break;

        }

        if(num < /*nums[0]*/ *p)//用户输入的值最小,放在第一位

        {

            while(count >= 0)//数组中原来的所有元素都往后移一位

            {

                //nums[count+1] = nums[count];

                *(p+count+1) = *(p+count);

                count--;

            }

            //nums[0] = num;//用户输入的数字放在第一位

            *p = num;

            break;

        }


    }

    a++;


    for(i = 0;i < a;i++)

    {

        printf("%d\n",*(p+i));

    }


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区