c语言大侠们,进来帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/05/10 22:31:09
题目是用选择法对10个整数按从大到小顺序排序。
#include<stdio.h>
void main()
{void sort(int x[],int n);
int *p,i,a[10];
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{printf("%d",*p);p++;}
}

void sort(int x[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t;}
}
}

以上.
这是书上的例题,我输到turbo c/c++ 3.0里后,输入10个数跟本无法排序。
难道书上也会写错?
请高手找一下哪里错了,给个正确的解,谢谢..

在int *p,i,a[10];下面加上
p=a;\\a首地址给p
for(i=0;i<10;i++)
scanf("%d",p++);因为第一个for循环读入数据后p指向数组末尾,执行第二个for语句前要使p回到&a[0]多加p=a

你这里根本没有输入函数如何输入数据呢?

"输入10个数跟本无法排序",你哪句话是输入的?加上这句

printf("请输入是个数:");
for(i=0;i<10;i++)
scanf("%d ",&a[i]);

数组a[10],没有初始化。
#include<stdio.h>
void main()
{
void sort(int x[],int n);
int *p,i,a[10]={1,5,2,6,4,3,7,8,9,10};
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%d ",*p);p++;
}
printf("\n");
}

void sort(int x[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{
t=x[i];x[i]=x[k];x[k]=t;
}
}
}

您好 您没有加入输入函数