1 #define MaxLen 256
2 #include <stdio.h>
3 void main()
4 {
5 int s[MaxLen]={0};
6 int i=0;
7 int count=0;
8 int *pmin=0;
9 printf("你要对多少个数字进行选择排序?\n请输入:");
10 scanf("%d",&i);
11 if(i>MaxLen)
12 {
13 printf("数字过大,重新输入:");
14 scanf("%d",&i);
15 }
16 printf("你要对%d个数字进行选择排序,这个数字序列是:\n",i);
17 for (int k=0; k<i; k++)
18 {
19 scanf("%d",&s[k]);
20 }
21
22 for (;count<i;count++)
23 {
24 pmin=&s[count];
25 for (int t=count; t<i; t++) //和自己对比一次;数组谨防越界。
26 {
27 if (*pmin>s[t])
28 pmin=&s[t];
29 }
30 if(*pmin<s[count]) //不加这个判断语句,倘若count循环进行到倒数第二次时恰好排好,会出现逻辑问题
31 {
32 *pmin^= s[count];
33 s[count]^= *pmin;
34 *pmin^= s[count];
35 }
36 }
37 printf("\n");
38 for (int j=0; j<i; j++)
39 {
40 printf("%3d",s[j]);
41 }
42 printf("\n");
43 }
44