| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 650 人关注过本帖
标题:关于排序的问题(每天一帖,学习进步。)大神指导。。。。
只看楼主 加入收藏
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
结帖率:87.5%
收藏
已结贴  问题点数:15 回复次数:19 
关于排序的问题(每天一帖,学习进步。)大神指导。。。。
题目:
输入一个数组,然后将输入的数组的元素从小到大进行排列。
我的程序如下,球大神帮忙指导一下,哪里需要改进。
# include <stdio.h>
int arrin(int *a,int m)
{int i,j;
  for(i=0;i<m;i++)
  {
    scanf("%d",&j);
    a[i]=j;
    printf("%d ",a[i]);
  }
  printf("\n");
}
int arrselect(int *a,int m)
{int i,j,k,t;
  for(i=0;i<m-1;i++)
  {
   for(j=i+1;j<m-1;j++)
   {if(a[i]>a[j])
       {t=a[j];a[j]=a[i];a[i]=t;}
  }
}
int arrout(int *a,int m)
{int i;
for(i=0;i<m;i++)
printf("%d ",a[i]);
}
main()
{int a[10],m,i;
scanf("%d",&m);
arrin(a,m);
arrselect(a,m);
arrout(a,m);
}
搜索更多相关主题的帖子: include 元素 
2012-11-09 22:56
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
哦,上面的arrselect函数,if语句掉了一个“}”,请大神不要纠结这个问题,不小心打错了,帮忙看看其他的问题。
2012-11-09 22:59
未名湖的云
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:130
专家分:190
注 册:2012-10-11
收藏
得分:3 
我是这样修改的~~~~
# include <stdio.h>
void arrin(int *a,int m)//不需要返回值
{
    int i;
for(i=0;i<m;i++)
{
    scanf("%d",&a[i]);
}
printf("\n");
}
void arrselect(int *a,int m)
{
    int i,j,k,t;
    for(i=0;i<m;i++)//<之前的m-1如果没有,最后一个元素就取不到了~~~
    {
        for(j=i+1;j<m;j++)
        {
            if(a[i]>a[j])
                {
                    t=a[j];
                    a[j]=a[i];
                    a[i]=t;
                }
        }
    }
}
void arrout(int *a,int m)
{
    int i;
     for(i=0;i<m;i++)
     printf("%d ",a[i]);
}
void main()
{int a[10],m,i;
scanf("%d",&m);
arrin(a,m);
arrselect(a,m);
arrout(a,m);
}
2012-11-09 23:15
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
回复 3楼 未名湖的云
大神,好像还是不行啊,我用的是VC++6.0,你试试。。
2012-11-09 23:53
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:4 
#include <stdio.h>
 
int arrin(int *a,int m)
{int i,j;
  for(i=0;i<m;i++)
  {
    scanf("%d",&j);
    a[i]=j;
    printf("%d ",a[i]);
  }
  printf("\n");
return 0;}
int arrout(int *a,int m)
{int H;
for(H=0;H<m;H++)
printf("%d ",a[H]);
return 0;}
int arrselect(int *a,int m)
{int i,j,t;
  for(i=0;i<=m-1;i++)
  {
   for(j=i+1;j<=m-1;j++)
   {if(a[i]>a[j])
       {t=a[j];a[j]=a[i];a[i]=t;}
  }}
  return 0;}
void main()
{int a[10],m;
scanf("%d",&m);
arrin(a,m);
arrselect(a,m);
arrout(a,m);
}
在你的基础上改的,看看,不清楚我们继续讨论

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-11-10 00:14
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
回复 5楼 菜鸟一支
还是不行啊,能帮忙分析一下吗?我的代码的问题。我用的是VC++6.0额。。你那边可以?最后两位数还是没排列正确。
2012-11-10 00:26
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:5 
修改了一下,仅供参考!
#include <stdio.h>
int arrin(int *a,int m)
{
    int i,j;
    for(i=0;i<m;i++)
    {
         scanf("%d",&j);
         a[i]=j;
    }
    return 0;
}
int arrselect(int *a,int m)
{
    int i,j,k,t;
    for(i=0;i<m-1;i++)//冒泡排序法
    {
        for(j=i+1;j<m;j++)
        {
            if(a[i]>a[j])
            {
                t=a[j];
                a[j]=a[i];
                a[i]=t;
            }
        }
    }
    return 0;
}
int arrout(int *a,int m)
{
    int i;
    printf("排序后的数字:");
    for(i=0;i<m;i++)
    printf("%d ",a[i]);
    printf("\n");
    return 0;
}
int main()
{
    int a[10],m,i;
    printf("请输入数的个数(不超过10):");
    scanf("%d",&m);
    if(m>10)//防止数组越界
    {
         printf("错误!数的个数不能超过10!\n");
         return 0;
    }
    printf("开始输入数字:");
    arrin(a,m);//数组赋值函数
    arrselect(a,m);//数组元素从小到大排序函数
    arrout(a,m);//打印数组元素函数
    return 0;
}

执行结果如下:
请输入数的个数:6
开始输入数字:4 7 9 2 6 1
排序后的数字:1 2 4 6 7 9

[ 本帖最后由 小小战士 于 2012-11-10 04:02 编辑 ]

小小战士,战士中的战斗机!
2012-11-10 03:56
未名湖的云
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:130
专家分:190
注 册:2012-10-11
收藏
得分:0 
回复 4楼 Mirob
# include <stdio.h>
void arrin(int *a,int m)//不需要返回值
{
    int i;
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\n");
}
void arrselect(int *a,int m)
{
    int i,j,k,t;
    for(i=0;i<m;i++)//<之前的m-1如果没有,最后一个元素就取不到了~~~
    {
        for(j=i+1;j<m;j++)
        {
            if(a[i]>a[j])
            {
                t=a[j];
                a[j]=a[i];
                a[i]=t;
            }
        }
    }
}
void arrout(int *a,int m)
{
    int i;
    for(i=0;i<m;i++)
        printf("%d ",a[i]);
}
void main()
{int a[10],m,i;
scanf("%d",&m);
arrin(a,m);
arrselect(a,m);
arrout(a,m);
}

这没有问题呀,我测试过了,发给你的你运行的是什么情况????
2012-11-10 10:26
未名湖的云
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:130
专家分:190
注 册:2012-10-11
收藏
得分:0 
回复 4楼 Mirob
# include <stdio.h>
void arrin(int *a,int m)//不需要返回值
{
    int i;
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\n");
}
void arrselect(int *a,int m)
{
    int i,j,k,t;
    for(i=0;i<m;i++)//<之前的m-1如果没有,最后一个元素就取不到了~~~
    {
        for(j=i+1;j<m;j++)
        {
            if(a[i]>a[j])
            {
                t=a[j];
                a[j]=a[i];
                a[i]=t;
            }
        }
    }
}
void arrout(int *a,int m)
{
    int i;
    for(i=0;i<m;i++)
        printf("%d ",a[i]);
}
void main()
{int a[10],m,i;
scanf("%d",&m);
arrin(a,m);
arrselect(a,m);
arrout(a,m);
}

这没有问题呀,我测试过了,发给你的你运行的是什么情况????
2012-11-10 10:27
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:0 
我也用的是VC++6.0  可以运行  
图片附件: 游客没有浏览图片的权限,请 登录注册

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-11-10 10:52
快速回复:关于排序的问题(每天一帖,学习进步。)大神指导。。。。
数据加载中...
 
   



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

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