时缔&实验室

有时候,正是那些意想不到之人,成就了无人能成之事。——艾伦·图灵

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

问题及代码:

/*求最小姓氏*/

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


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Emperor_21AD_ShiDi/article/details/51557785
个人分类: C语言 C语言案例
上一篇第10周 C语言及程序设计提高例程-36 多维数组作函数参数
下一篇第10周 C语言及程序设计提高例程-38 main函数的参数
想对作者说点什么? 我来说一句

C语言及程序设计

2015年03月17日 889KB 下载

没有更多推荐了,返回首页

关闭
关闭