注册 登录
编程论坛 C语言论坛

怎么看都没看出哪错了感觉逻辑一点都没有希望大神解决

qwq198406728 发布于 2019-07-25 01:12, 1498 次点击
  图片是运行效果图
想要实现一个排序好一个数组 然后输入一个数 插入数组 重新排列输出 看了半天不知道为毛错了感觉逻辑没错
#include "stdio.h"
#include"stdlib.h"

int main(void)
{
    int a[]={123,321,456,654,789,987,444,666,555};
    int re;
     int lengh=sizeof(a)/sizeof(int);/*获取数组长度 */
        int import;
     
    int p=0;
    for (int i = 0; i<lengh; i++)
    {
        for (int j = i+1; j<lengh ;j++)/*排序代码 */
        {
            if(a[i]>a[j] )
            {  p =a[i];
              a[i]  =a[j];
              a[j] = p;

            }
                   /* code */
        }
          /* code */
    }
     for (int i = 0; i < lengh; i++)/*遍历数组 */
            {
                printf("%d   ",a[i]);
                /* code */
            }      
        scanf("%d",&import);/*输入一个数 */
        /* a[]={123,321,456,654,789,987,444,666,555};*/
       a[lengh]=import;/*将数放入数组末加一个元素 */
       lengh++;/*长度加1 */
     for (int i = 0; i <lengh; i++)
        {
             if (a[i]>a[lengh-1])/*如果a[i]小于a[lengh-1]交换位置*/
             {int t;
              t=a[i];
              a[i]=a[lengh-1];
              a[lengh-1]=t;
              re=i;/*记录i */         
              break;
            }      
        }
     for (int i = re; i<lengh; i++)/*从开始排序排序 */
        for (int j = i+1; j<lengh ;j++)
        {
            if(a[i]>a[j] )
            {
              p=a[i];
              a[i]=a[j];
              a[j]=p;

            }
        }
         
        for (int i = 0; i < lengh; i++)/*遍历输出 */
      {
        printf("%d   ",a[i]);
      
     }      

system("pause");

    return 0;
}
4 回复
#2
qwq1984067282019-07-25 01:12
只有本站会员才能查看附件,请 登录
#3
qwq1984067282019-07-25 01:13
只有本站会员才能查看附件,请 登录

#4
qwq1984067282019-07-25 01:13
回复 2楼 qwq198406728
这个是运行效果图
#5
吹水佬2019-07-25 04:50
数组元素个数要加多一个,数组要分配多一个元素的空间。
另,找到插入位置后将后面的整块后移一个元素位再插入新元素,不用再排序。
1