| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 344 人关注过本帖
标题:刚学完数组的选择排序,请问这个顺序输出的哪里错了?怎么不能输出正确答案 ...
只看楼主 加入收藏
QQ973333859
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-4-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
刚学完数组的选择排序,请问这个顺序输出的哪里错了?怎么不能输出正确答案?

}#include<stdio.h>
void main()
{
    int a[6]={3,8,4,1,6,9},i,p,j,t;
    for(i=0;i<5;i++)
    {
        p=i;
        for(j=i;j<5;j++)
        {
            if(a[p]<a[j])
            {
                t=a[p];
                a[p]=a[j];
                a[j]=t;   
                p=j;
            }
            printf("%d",a[p]);
        }     
        
    }


}
搜索更多相关主题的帖子: 正确答案 
2012-04-25 23:42
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:10 
#include<stdio.h>
 void main()
 {
     int a[6]={3,8,4,1,6,9},i,p,j,t;
     for(i=0;i<6;i++)
     {
         p=i;
         for(j=i;j<6;j++)
         {
             if(a[p]<a[j])
             {
                 t=a[p];
                 a[p]=a[j];
                 a[j]=t;   
             }
         }  
         printf("%2d",a[p]);
     }
}
对比一下看看
2012-04-25 23:51
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:10 
不论是从大到小还是从小到大,你应该输出的是6个数吧?
所以你最大的问题在于你把printf()函数放在了for(j=0;……)这个循环里,因此,你自己分析一下就ok了,
实际上你输出的次数是5+4+3+2+1=15次;
其实,你自己输出不对的话,自己应该首先试着多排查,你这个原程序显然输出个数不对,那么你就找循环的错误,要是输出个数正确,顺序不对,你再找算法的错误……
还有,对于这种简单的程序,大脑完全可以模拟计算机的单步调试,从i=0,j=0开始一步步来,多练习没问题的……
另外,2L正解……
2012-04-26 09:04
快速回复:刚学完数组的选择排序,请问这个顺序输出的哪里错了?怎么不能输出正确 ...
数据加载中...
 
   



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

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