C语言设计

第24章


4. 字符串拷贝函数 strcpy
   格式:  strcpy (字符数组名 1,字符数组名 2)
   功能:把字符数组 2 中的字符串拷贝到字符数组 1 中。串结束标志“”也一同拷贝。
字符数名 2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。
【例 7.15】
#include"string.h"
main()
{
  char st1[15],st2[]="C Language";
  strcpy(st1,st2);
  puts(st1);printf(" ");
}
本函数要求字符数组 1 应有足够的长度,否则不能全部装入所拷
贝的字符串。
5. 字符串比较函数 strcmp
   格式:  strcmp(字符数组名 1,字符数组名 2)
   功能:按照 ASCII 码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
          字符串 1=字符串 2,返回值=0;
          字符串 2〉字符串 2,返回值〉0;
          字符串 1〈字符串 2,返回值〈0。
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。
【例 7.16】
#include"string.h"
main()
{ int k;
  static char st1[15],st2[]="C Language";
  printf("input a string: ");
  gets(st1);
  k=strcmp(st1,st2);
  if(k==0) printf("st1=st2 ");
  if(k>0) printf("st1>st2 ");
  if(k=i;s--) a[s+1]=a[s];
      break;}
      a[i]=n;
    for(i=0;ia[i]时,则由一个内循环
把 i 以下各元素值顺次后移一个单元。后移应从后向前进行(从 a[9]开始到 a[i]为止)。 后
移结束跳出外循环。插入点为 i,把 n 赋予 a[i]即可。 如所有的元素均大于被插入数,则
并未进行过后移工作。此时 i=10,结果是把 n 赋于 a[10]。最后一个循环输出插入数后的数
组各元素值。
    程序运行时,输入数 47。从结果中可以看出 47 已插入到 54 和 28 之间。
【例 7.19】在二维数组 a 中选出各行最大的元素组成一个一维数组 b。
a=( 3  16 87  65
  4  32 11 108
10 25 12  37)
b=(87 108 37)
本题的编程思路是,在数组 A 的每一行中寻找最大的元素,找到之后把该值赋予数组 B
相应的元素即可。程序如下:
main()
{
    int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27};
    int b[3],i,j,l;
    for(i=0;il) l=a[i][j];
b[i]=l;}
    printf(" array a: ");
    for(i=0;i<=2;i++)
      { for(j=0;j<=3;j++)
printf("%5d",a[i][j]);
printf(" ");}
      printf(" array b: ");
    for(i=0;i<=2;i++)
      printf("%5d",b[i]);
    printf(" ");
}
谭浩强      C 语言程序设计               2001 年 5 月 1 日
程序中第一个 for 语句中又嵌套了一个 for 语句组成了双重循环。外循环控制逐行处理,
并把每行的第 0 列元素赋予 l。进入内循环后,把 l 与后面各列元素比较,并把比 l 大者赋
予 l。内循环结束时 l 即为该行最大的元素,然后把 l 值赋予 b[i]。等外循环全部完成时,
数组 b 中已装入了 a 各行中的最大值。后面的两个 for 语句分别输出数组 a 和数组 b。
【例 7.20】输入五个国家的名称按字母顺序排列输出。
    本题编程思路如下:五个国家名应由一个二维字符数组来处理。然而C语言规定可以把
一个二维数组当成多个一维数组处理。 因此本题又可以按五个一维数组处理, 而每一个一
维数组就是一个国家名字符串。用字符串比较函数比较各一维数组的大小,并排序,输出结
果即可。
编程如下:
main()
{
    char st[20],cs[5][20];
    int i,j,p;
    printf("input country"s name: ");
    for(i=0;i<5;i++)
      gets(cs[i]);
    printf(" ");
    for(i=0;i<5;i++)
      { p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;j++)
      if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
    if(p!
小说推荐
返回首页返回目录