任务代码:
(1)求最小的姓氏:(对比姓氏开头的ASCII值)
#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));
}
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;
}
(2)姓氏排序
#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;
}
}
(3)二级指针
#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;
}
知识总结:
字符串数组容易造成一定程度的空间浪费!
指针字符数组可以避免空间浪费!
(2)指向指针的指针: