c语言:定义一个 二维数组,存放五个字符串,然后用选择法按从小到大的的顺序排序并

如题所述

#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;
}

温馨提示:答案为网友推荐,仅供参考
第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;
}本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网