例:求最小姓氏
#include <stdio.h>
#include <string.h>
char *min_name(char [][10], int);
int main( )
{
char name[5][10]= {"Zhao", "Qian", "Sun", "Li", "Zhou"};;
printf("%s\n", min_name(name, 5));
return 0;
}
char *min_name(char nam[][10], int n)
{
int i;
char *p;
p = nam[0];
for(i=0; i<n; i++)
if(strcmp(p, nam[i])>0)
p = nam[i];
return p;
}
例:姓氏排序
#include <stdio.h>
#include <string.h>
void sort(char *name[],int n);
void print(char *name[],int n);
int main( )
{
char *name[]= {"Zhao", "Qian", "Sun", "Li", "Zhou"};
sort(name, 5);
print(name, 5);
return 0;
}
void print(char *name[],int n)
{
int i;
for(i=0; i<n; i++)
printf("%s\n", name[i]);
}
void sort(char *name[],int n)
{
char *temp;
int i,j,k;
for(i=0; i<n-1; i++)
{
k=i;
for(j=i+1; j<n; j++)
if(strcmp(name[k],name[j])>0)
k=j;
temp=name[i];
name[i]=name[k];
name[k]=temp;
}
}
用二级指针处理
#include <stdio.h>
int main( )
{
char **p;
char *name[]= {"Zhao", "Qian", "Sun", "Li", "Zhou"};
for(p=name+1; p<name+5; p+=2)
printf("%s\n",*p);
return 0;
}