本题要求实现一个函数,实现学生英文名按照其在字典中的顺序进行排序,假设学生不超过20个。要求如下:用指针数组作函数参数,实现字符串的按字典顺序排列。
函数接口定义:
void SortString ( char *ptr[], int n );
其中 ptr[]
为字符指针数组, n
为学生数量。
裁判测试程序样例:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 10
#define N 20
void SortString ( char *ptr[], int n );
int main() {
int i,n; char name[N][MAX_LEN]; //定义二维字符数组
char *pStr[N]; //定义字符指针数组
scanf("%d", &n);
getchar(); //读走缓冲区中的回车符
for(i=0; i<n; i++)
{ pStr[i] =name[i]; gets(pStr[i]); }
SortString(pStr, n); //英文姓名按字典顺序排列
for(i=0; i<n; i++) { puts(pStr[i]); //输出排序后的n个名字
}
return 0;
} /* 请在这里填写答案 */
输入样例:
6
james
john
david
jane
mary
elizabeth
输出样例:
david
elizabeth
james
jane
john
mary
答案样例如下
void SortString ( char *ptr[], int n ){
int i,j;
char *t;
for(i=0;i<n;i++){
for(j=0;j<n-i-1;j++){
if(strcmp(ptr[j],ptr[j+1])>0){
t=ptr[j];
ptr[j]=ptr[j+1];
ptr[j+1]=t;
}
}
}
}