A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在一个排好序的数组中,输入一个数,按排序的顺序的规律将它插入到数组中

#include<stdio.h>
int main()
{
    int a[6] = {1,3,6,7,9};
    int i,j,x;
    printf("insert data:");
    scanf("%d",&x);
    for(i=0;i<5;i++)
        if(x<a)   
            break;   
    for(j=5;j>i;j--)   //重这以后就看不懂了 求 高人 指点 ,要精辟点的,最好能用白话,不要专业术语。
        a[j]=a[j-1];  
    a[j]=x;   
    printf("Now array a:\n");
    for(i=0;i<6;i++)   
        printf("%4d",a);
    printf("\n");  
    return 0;

}

9 个回复

倒序浏览
你确定这是正确的代码么?以后用到C语言排序直接用冒泡排序。
回复 使用道具 举报
本帖最后由 小月格子猫 于 2014-8-22 01:33 编辑

稍等一下,我整理一下
回复 使用道具 举报
曹雨 来自手机 中级黑马 2014-8-22 04:29:28
板凳
第一个for找出i位置,第二个是把数组从最后一个数开始直到i+1 都向后移一位。然后将数插入i处。第三个for输出。懂不?现在我用的手机。不懂回复我。中午用电脑给你回
回复 使用道具 举报
曹雨 发表于 2014-8-22 04:29
第一个for找出i位置,第二个是把数组从最后一个数开始直到i+1 都向后移一位。然后将数插入i处。第三个for输 ...
  1. int main(){
  2.     int a[6] = {1,3,6,7,9};
  3.     int i,j,x;
  4.     printf("insert data:");
  5.     scanf("%d",&x);
  6.     for(i=0;i<5;i++){
  7.         if(x<a[i]) // 原来少了[i]!!
  8.             break; //  让循环在i比a大的时候,停止.  这个时候就是..{1,3,6,7,9},,,i指向比x大的数所在的位置.
  9.     }
  10.     for(j=5;j>i;j--){
  11.         a[j]=a[j-1];    // 从最后一位开始,把所有的数都赋值给后一位,当比x大的数后移一位的时候,停止.
  12.     }
  13.     a[j]=x;            //  将x赋值到,第i位数.  此时,就完成.
  14.    
  15.     printf("Now array a:\n");
  16.     for(i=0;i<6;i++)
  17.         printf("%4d",a[i]);  //  少了[i].输出数组
  18.     printf("\n");  
  19.     return 0;
  20.    
  21. }
复制代码
回复 使用道具 举报
呵呵,, 点错了..
回复 使用道具 举报
修改,插入代码格式
回复 使用道具 举报
看了看前面的  if(x<a[i] )少个i  。看了半天没看懂。  再往下看就好多了
回复 使用道具 举报
求解……………………………………
回复 使用道具 举报
谢谢楼上解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马