| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1132 人关注过本帖
标题:关于数组的一个大小排序,插入一个数据后,排序出错
取消只看楼主 加入收藏
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:1 
关于数组的一个大小排序,插入一个数据后,排序出错
程序代码:
#include<stdio.h>
#include<math.h>

int main(void)
{
    int i,j,p,q,s,n,m,a[10];
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++)
    {
        p=i;
        q=a[i];
        for(j=i+1;j<10;j++)
        {
            if(q<a[j])
            {
                p=j;
                q=a[j];
            }
        }
        s=a[i];
        a[i]=a[p];
        a[p]=s;    
        printf("%d\t",a[i]);
    }
    printf("\n");
    scanf("%d",&n);
    for(i=0;i<10;i++)
    {
        if(n>a[i])
        {
            for(m=9;m>=i;m--)
            {
                a[m+1]=a[m];/*从a[9]开始一直到a[i]位的数据整体向后平移一位*/
            }
            a[i]=n;  /*第i位空出来用n补充,由于数据从大到小排列,故不再循环,跳出*/
            break;
        }
        else if(i==9)
            a[i+1]=n;/*如果n比所有a[i]小,则放在i+1位*/
    }
    for(i=0;i<=10;i++)
    {
        printf("%d\t",a[i]);
    }
    return 0;
}





代码如上,求大侠检查。
图片附件: 游客没有浏览图片的权限,请 登录注册
,结果如上,按结果所示,似乎是数据并没有后移一位,第i位的数据直接被n替换了(a[i]=n)
2013-05-17 01:50
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
回复 4楼 wangzhili
试下这个解决方案......
2013-05-17 22:25
快速回复:关于数组的一个大小排序,插入一个数据后,排序出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013166 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved