| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:求助,帮忙看下怎样改。
只看楼主 加入收藏
form521
Rank: 1
来 自:西安
等 级:新手上路
帖 子:162
专家分:4
注 册:2006-12-21
收藏
 问题点数:0 回复次数:5 
求助,帮忙看下怎样改。
#include<stdio.h>这段代码的意图是排序,但编译后输出的结果是错的。
int main(void)
{
    int a[5],n,min;
    for(n=0;n<5;n++)
    {scanf("%d ",&a[n]);}
    min=a[0];
    for(n=1;n<5;n++)
    {
       if(min>a[n])
       {int t=a[n];
            a[n]=min;
            min=t;
       }
    }
    printf("%d\n",a[n]);
    system("pause");
    return 0;
}                        请帮忙看下怎么改。
2008-03-26 13:06
morpheus520
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-26
收藏
得分:0 
算法就是不对的。你只是 两两比较。
实际并没有把最小得放到第一个去。

这个我记得有一个叫 冒泡算法的是解决排序问题得
2008-03-26 13:10
dhas
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-3-25
收藏
得分:0 
这个程序错无太多了,是不是故意设的题目啊?
第一个for执行第一轮,刚给数组第一个元素赋值,你怎么能排序啊?
还有printf跑到for外边参数还是a[n],你怎么输出所有元素?
逻辑太乱了。要是改还不如重写一下。
2008-03-26 13:22
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
按你的思路
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int a[5],i,j,k,min;
    for(i=0;i<5;++i)
        scanf("%d",&a[i]);
    for(i=0;i<4;++i)
    {
        min=a[i];
        k=i;
        for(j=i+1;j<5;++j)
            if(a[j]<min)
            {
                min=a[j];
                k=j;
            }
        if(k!=i)
        {
            min=a[i];
            a[i]=a[k];
            a[k]=min;
        }
    }
    for(i=0;i<5;++i)
        printf("%d\n",a[i]);
    system("pause");
    return 0;
}
2008-03-26 13:37
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
你是要用选择排序吧!
2008-03-26 13:37
lymanni
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-3-15
收藏
得分:0 
排序是要用双重循环的
一重循环只是比较两个数字的大小
还要有一重循环来进行排序
而且输出的时候也要用循环
2008-03-26 15:05
快速回复:求助,帮忙看下怎样改。
数据加载中...
 
   



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

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