各位哥哥,给我看一下下面的程序,怎么顺序排不了啊,谢谢#include<stdio.h>
void main()
{
void swap(int a[],int n);
int *p1,i,a[10];
p1=a;
for(i=0;i<10;i++)
scanf("%d",p1++);
swap(a,10);
p1=a;
for(i=0;i<10;i++)
printf("%d",*p1++);
}
void swap(int a[],int n)
{
int temp,i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+i]=temp;
}
}
}
}

解决方案 »

  1.   


    #include <stdio.h>void main()
    {
    void swap(int a[],int n);
    int *p1,i,a[10]={ 0, 8, 9, 7, 6, 5, 4, 3, 2, 1 };;
    p1=a;
    // for(i=0;i<10;i++)
    // scanf("%d",p1++);
    swap(a,10);
    p1=a;
    for(i=0;i<10;i++)
    printf("%d",*p1++);
    }
    void swap(int a[],int n)
    {
    int temp,i,j;
    for(i=0;i<n-1;i++)
    {
    for(j=0;j<n-1-i;j++)
    {
    if(a[j]<a[j+1])
    {
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp; // 原来是a[j+i]=temp, 错误
    }
    }
    }
    }
      

  2.   

    #include "stdafx.h"#include<stdio.h>
    void main()
    {
    void swap(int a[],int n);
    int *p1,i,a[10];
    p1=a;
    for(i=0;i<10;i++)
    scanf("%d",p1++);
    swap(a,10);
    p1=a;
    for(i=0;i<10;i++)
    printf("%d",*p1++);
    }
    void swap(int a[],int n)
    {
    int temp,i,j;
    for(i=0;i<n;i++)
    {
    for(j=i+1;j<n;j++)
    {
    if(a[i]<a[j])
    {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
    }
    }
    }