用C写一个选择排序的程序

可以输入任意值,值与值是之间用空格隔开的,比如我输入2 40 87 90,
然后用选择排序运行出大小排序。

应该还可以,这是十个的排序,小菜鸟献上
#include "stdafx.h"

int main()
{int a[10],b,i,e=0,c;
for(i=0;i<10;i++)
scanf("%d",&a[i]);

for(c=0,b=9;b>=0;b--,c++)
{
for(i=0;i<10-c;i++)

if(a[b]<=a[i])
{
e=a[i];
a[i]=a[b];
a[b]=e;
}

}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}

 #include<stdio.h>  
#define N 4
void SelectionSort(int *num,int n)  
{  
 int i = 0;  
 int min = 0;  
 int j = 0;  
 int tmp = 0;  
 for(i = 0;i < n-1;i++)  
 {  
    min = i;//每次讲min置成无序组起始位置元素下标   
    for(j = i;j < n;j++)//遍历无序组,找到最小元素。   
    {  
      if(num[min]>num[j])  
      {  
       min = j;  
      }  
    }  
    if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置   
    {  
      tmp = num[min];  
      num[min] = num[i];  
      num[i] = tmp;  
    }  
 }  
}  

int main()  
{  
 int num[N] = {2, 40, 87, 90};  
 int i = 0;  
 SelectionSort(num,N);//这里需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。   
 for(i = 0;i < N;i++)  
 {  
   printf("%d ",num[i]);  
 }  
 return 0;  
}  

个人感觉你问的是输入的空格怎么处理识别。 如果感觉没有错, 你可以创建一个字符型数组,然后判断是否遇到了空格,空格与空格之间的字符组合成数据(当然字符串最后是/0结尾的),再排序。
如果用scanf来接收的话,字符串中不能含有空格,否则将以空格作为串的结束符。如果你键入得是harry potter 那么实际上scanf只能获取harry这个单词。所以要接收空格的话可以用gets()这个函数。(http://blog.csdn.net/leichelle/article/details/8117018)

#include "stdio.h"
int main()
{
int a[10],b,i,e=0,c;
for(i=0;i scanf("%d",&a[i]);
for(c=0,b=9;b>=0;b--,c++) {
for(i=0;i<10-c;i++)
if(a[b]<=a[i])
{ e=a[i]; a[i]=a[b]; a[b]=e; }
} for(i=0;i<10;i++)
printf("%d\n",a[i]); }

本人菜鸟一个,觉得传参时怎么能把num(指的是数组的首地址)传给一个指针int *num

不知道对不对,原理是对的,跟冒泡相反。
#include
int main()
{
int a[5]={1,2,3,6,5};
int i,j,ch;
for(i=0;i {
for(j=i+1;j {
ch=a[i];
if(a[i]>a[j])
{
a[i]=a[j];
a[j]=ch;
}
}
}
for(i=0;i<5;i++)
printf("%d\n",a[i]);
return 0;
}