| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 899 人关注过本帖
标题:一个数组排序的问题
只看楼主 加入收藏
williamweng
Rank: 1
等 级:新手上路
帖 子:34
专家分:2
注 册:2010-10-7
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:15 
一个数组排序的问题
想编一个能够自己定义数组大小并根据输入的元素进行排序的程序,但是每次都是中止运作。是不是有什么问题啊?求解!!!谢谢!!!
代码如下:
程序代码:
#include"stdio.h"
main()
{ 
    int m,t,i,j;
    printf("input how many numbers you want\n");
    scanf("%d",m);
    int a[m];
    printf("input numbers\n");
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    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;
            }
        }
    }
    for(i=0;i<m;i++)
    {
        printf("%d ",a[i]);
    }
}
搜索更多相关主题的帖子: 元素 
2012-08-14 15:51
YanXi_528
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2012-8-14
收藏
得分:0 
int a[m];
先看到这句了,仔细想一下数组定义..

自定义数组大小可能要用到动态申请空间,小弟不才,不会,但是这里是错误的


[ 本帖最后由 YanXi_528 于 2012-8-14 16:33 编辑 ]
2012-08-14 16:31
Quest
Rank: 1
来 自:江苏连云港
等 级:新手上路
帖 子:11
专家分:0
注 册:2012-8-13
收藏
得分:0 
int a[m] //不能这样定义// 数组大小只能是常量 ;
scanf("%d",m);地址符缺少

欲望以提升热忱,毅力以磨平高山。
2012-08-14 16:49
风逸护焰
Rank: 2
等 级:论坛游民
帖 子:9
专家分:16
注 册:2012-8-13
收藏
得分:0 
内层循环好像也错了吧!应该为:
         for(j=0;j<m-1-i;j++)
         {
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
         }
这是冒泡排序法的固定代码,不知楼主知道不?应该是这样的。
2012-08-14 17:11
chuanglan
Rank: 2
等 级:论坛游民
威 望:2
帖 子:91
专家分:29
注 册:2012-8-14
收藏
得分:0 
回复 4楼 风逸护焰
不仅有冒泡法,还有选择排序,楼主用的就是选择排序,
2012-08-14 18:55
chuanglan
Rank: 2
等 级:论坛游民
威 望:2
帖 子:91
专家分:29
注 册:2012-8-14
收藏
得分:5 
动态数组的话,要用链表,如果是计算及专业的话,就要掌握的,如果不是,要求就不高,另外,你的明显错误大家已经纠正了,就是没有这样定义的a[m],[];里面必须是常量,不过现在又的编译器可以让是m但那时稀有情况
2012-08-14 18:58
justNPC
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:311
注 册:2012-8-11
收藏
得分:0 
你应该先按照编译时给出的错误好好修改一下
2012-08-14 21:10
Bob2012
Rank: 2
来 自:临潼
等 级:论坛游民
帖 子:16
专家分:23
注 册:2012-8-15
收藏
得分:0 
Copy?
`

艺多不压身 爱你们就想日后驾御你们!
2012-08-15 02:20
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:5 
#include"stdio.h"
#include<malloc.h>
main()
{
    int m,t,i,j,*p;
    printf("input how many numbers you want\n");
    scanf("%d",&m);
    p=(int *)malloc(sizeof(int)*m);
    printf("input numbers\n");
    for(i=0;i<m;i++)
    {
        scanf("%d",&p[i]);
    }
    for(i=0;i<m-1;i++)
    {
        for(j=i+1;j<m;j++)
        {
            if(p[i]>p[j])
            {
                t=p[j];
                p[j]=p[i];
                p[i]=t;
            }
        }
    }
    for(i=0;i<m;i++)
    {
        printf("%d ",p[i]);
    }
}
2012-08-15 08:18
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
收藏
得分:0 
#include <stdio.h>
int array[5]={17, 7, 8, 3, 6};
int main()
{
   int i,k,j,*p,m;
   printf("input how many numbers you want\n");
   scanf("%d",&m);
   p=(int *)malloc(sizeof(int)*m);
   printf("input numbers\n");
   for(i=0;i<m;i++)
   {
        scanf("%d",&p[i]);
   }

   for(i=1; i<m-1; i++){
      k=i;
      while(array[k]<array[k-1] && k>0){
         int tmp;
         tmp=array[k];
         array[k]=array[k-1];
         array[k-1]=tmp;
         k--;
      }
   }
   for(i=0;i<m;i++)
   {
       printf("%d ",p[i]);
   }

   return 0;
}
2012-08-15 09:12
快速回复:一个数组排序的问题
数据加载中...
 
   



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

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