关闭

第10章 C语言及程序设计提高例程-37 操作字符串数组

171人阅读 评论(0) 收藏 举报
分类:

问题及代码:

/*求最小姓氏*/

#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)   //比较s1、s2大小,s1大为正 
       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[5][10]={"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;  //类型写成int,造成编译不了
  char *name[]={"Zhao", "Qian", "Sun", "Li", "Zhou"};  
  for(p=name+1;p<name+5;p+=2)  //二级指针是什么意思?,name+1是行的地址
    printf("%s\n",*p);
  return 0;
}  


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:88422次
    • 积分:3095
    • 等级:
    • 排名:第11165名
    • 原创:215篇
    • 转载:36篇
    • 译文:0篇
    • 评论:3条
    最新评论