#include "stdafx.h"
#include "stdio.h"
void out_student(char (*p)[20],int n); //char (*p)[20]数据指针(行指针)
void sort_student(char (*p)[20],int n);
int main()
{char students[3][20];
int i;
for(i=0;i<3;i++)
scanf("%s",*(students+i)); //录入
out_student(students,3);
sort_student(students,3);
out_student(students,3);
return 0;
}
void out_student(char (*p)[20],int n) //(*p)行地址
{int i;
for(i=0;i<n;i++)
printf("%s",*(p+i));
printf("\n");
}
//选择排序
void sort_student(char (*p)[20],int n)
{int i,j;
for(i=0;i<n-1;i++)
{int pos=i;
for(j=i+1;j<n;j++)
{if(strcmp(*(p+j),*(p+pos)<0)) //strcmp(*(p+j),*(p+pos)<0) *(p+j)不能是行地址,一定要是列地址,是一级数组的首地址
{pos=j;}
}
}
if(pos!=i)
{char str[20]={'\0'};
strcpy(str,*(p+pos)); //*(p+pos)第pos行,第一列的地址 交换字符串
strcpy(*(p+pos),*(p+i));
strcpy(*(p+i),str);
}
}
//总结:
/*二维数组表示(行地址,列地址)
指针遍历数组
二维字符数组(行地址,列地址)*/
|