如题所述
#include <stdio.h>
#include <string.h>
#define N 5 //定义符号常量
#define MAX_LEN 100 //字符串最大长度
void selectSort(char (*pt)[MAX_LEN],int n) //形参pt为指向二维字符数组的指针
{
int i,j,k;
char tmp[MAX_LEN]; //临时字符数组
for(i=0;i<n-1;i++) //遍历所有未排序的字符串的趟数
{
k=i; //变量k存放当前最小字符串的下标
for(j=i+1;j<n;j++) //遍历下标从(i+1)~(n-1)的所有字符串
if(strcmp(pt[k],pt[j]) > 0) //字符串进行两两大小比较,如果>0,则执行if语句体
k=j; //将当前最小的字符串的数组下标赋值给变量k
if(k != i) //如果k不等于i,则执行if语句体
{ //两个字符串进行交换操作
strcpy(tmp,pt[k]);
strcpy(pt[k],pt[i]);
strcpy(pt[i],tmp);
}
}
}
int main()
{
char str[N][MAX_LEN]; //定义二维字符数组
int i;
printf("输入字符串:\n");
for(i=0;i<N;i++)
scanf("%s",str[i]);
selectSort(str,N); //调用选择排序函数
printf("输出排序后的字符串:\n");
for(i=0;i<N;i++)
printf("%s\n",str[i]);
return 0;
}
#include <string.h>
#define N 5 //定义符号常量
#define MAX_LEN 100 //字符串最大长度
void selectSort(char (*pt)[MAX_LEN],int n) //形参pt为指向二维字符数组的指针
{
int i,j,k;
char tmp[MAX_LEN]; //临时字符数组
for(i=0;i<n-1;i++) //遍历所有未排序的字符串的趟数
{
k=i; //变量k存放当前最小字符串的下标
for(j=i+1;j<n;j++) //遍历下标从(i+1)~(n-1)的所有字符串
if(strcmp(pt[k],pt[j]) > 0) //字符串进行两两大小比较,如果>0,则执行if语句体
k=j; //将当前最小的字符串的数组下标赋值给变量k
if(k != i) //如果k不等于i,则执行if语句体
{ //两个字符串进行交换操作
strcpy(tmp,pt[k]);
strcpy(pt[k],pt[i]);
strcpy(pt[i],tmp);
}
}
}
int main()
{
char str[N][MAX_LEN]; //定义二维字符数组
int i;
printf("输入字符串:\n");
for(i=0;i<N;i++)
scanf("%s",str[i]);
selectSort(str,N); //调用选择排序函数
printf("输出排序后的字符串:\n");
for(i=0;i<N;i++)
printf("%s\n",str[i]);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-11-27
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void selectsort(char a[][20],int n)
{
int i,z,j;
char x[20];
for(i=0;i<n;i++)
{
z=i;
for(j=i+1;j<n;j++) if(strcmp(a[j],a[z]) < 0)z=j;
if(z>i)
{
strcpy(x,a[i]);
strcpy(a[i],a[z]);
strcpy(a[z],x);
}
}
}
int main()
{
int i;
char str[5][20]=
{
"China",
"Janpan",
"USA",
"French",
"British"
};
printf("The string array:\n");
for(i = 0;i < 5;i++)
printf("%s\n",str[i]);
selectsort(str,5);
printf("After sort the string array:\n");
for(i = 0;i < 5;i++)
printf("%s\n",str[i]);
system("PAUSE");
return 0;
}本回答被网友采纳
#include <stdlib.h>
#include <string.h>
void selectsort(char a[][20],int n)
{
int i,z,j;
char x[20];
for(i=0;i<n;i++)
{
z=i;
for(j=i+1;j<n;j++) if(strcmp(a[j],a[z]) < 0)z=j;
if(z>i)
{
strcpy(x,a[i]);
strcpy(a[i],a[z]);
strcpy(a[z],x);
}
}
}
int main()
{
int i;
char str[5][20]=
{
"China",
"Janpan",
"USA",
"French",
"British"
};
printf("The string array:\n");
for(i = 0;i < 5;i++)
printf("%s\n",str[i]);
selectsort(str,5);
printf("After sort the string array:\n");
for(i = 0;i < 5;i++)
printf("%s\n",str[i]);
system("PAUSE");
return 0;
}本回答被网友采纳