回 帖 发 新 帖 刷新版面

主题:数组元素排序为何错了

请各位帮我瞧瞧这种排列数组的算法为何错了


#include<stdio.h>
#include<stdlib.h>
int main (void)
{
    int size;
    int i;
    printf("how many numbers do you want ?");
    scanf("%d",&size);
    int* ary[size];
    for(m=0;m<size;i++)
    {
    printf("enter the %d number ",(i+1));
    scantf("%d",&ary[0]);
   printf("\n");
   }
   int* psta;
   int* pend;
   int* pwalk;           
   int temp;
   pend=ary[size];
    for(i=o,psta=ary[0],pwalk=ary[i+1];i<size-1,pwlk<=pend;i++,pwalk++)
    {
    if(*psta>*pwalk)
    temp=*psta;
    psta=pwalk;
    }
    for(i=0;i<size;i++)
    printf("%3d",ary[i]);
     
    getchar();
    
    return(0);
}

回复列表 (共3个回复)

沙发

看楼主的程序真是崩溃啊。
错误一大推,是不是你写的啊?
最起码的0和o(欧)不要写错撒
  for(m=0;m<size;i++)
    {
     printf("enter the %d number ",(i+1));
     scantf("%d",&ary[0]);
     printf("\n");
   }
i之前没初始化,m又不++,这什么程序啊?

板凳

//自己编了一个程序供楼主参考
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
    int size;
    int i, j;
    int* ary;
    int temp;

    printf("How many numbers do you want ?");
    scanf("%d", &size);
    ary = (int *)malloc(sizeof(int) * size);//动态分配内存
    for(i = 0; i < size; i ++)
    {
        printf("Enter the %d number: ", (i+1));
        scanf("%d",&ary[i]);
        printf("\n");
    }
    printf("排序前:\n");
    for(i = 0; i < size; i ++)
        printf("%3d",ary[i]);
    
    printf("\n排序后:\n");
    for(i = size - 1; i >= 0; i --)//冒泡排序法
    {
        for(j = 0; j < i; j ++)
        {
            if(ary[j] > ary[j + 1])
            {
                temp = ary[j];
                ary[j] = ary[j + 1];
                ary[j + 1] = temp;
            }
        }
    }
    for(i = 0; i < size; i ++)
        printf("%3d",ary[i]);

    printf("\n");
    return(0);
}

3 楼


谢谢各位的帮助      大家一起进步

我来回复

您尚未登录,请登录后再回复。点此登录或注册