字体
第(4/6)页
关灯
   存书签 书架管理 返回目录
与后面各列元素比较,并把比 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 ncom:\n");

    for(i=0;i<5;i++)

    gets(cs[i]);

    printf("\n");

    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!=i)

    {

    strcpy(st,cs[i]);

    strcpy(cs[i],cs[p]);

    strcpy(cs[p],st);

    }

    puts(cs[i]);}printf("\n");

    }

    本程序的第一个 for 语句中,用 gets 函数输入五个国家名字符串。上面说过C语言允

    许把一个二维数组按多个一维数组处理,本程序说明 cs[5][20]为二维字符数组,可分为五

    个一维数组 cs[0],cs[1],cs[2],cs[3],cs[4]。因此在 gets 函数中使用 cs[i]是合法的。

    在第二个 for 语句中又嵌套了一个 for 语句组成双重循环。这个双重循环完成按字母顺序排

    序的工作。在外层循环中把字符数组 cs[i]中的国名字符串拷贝到数组 st 中,并把下标 i

    赋予 P。进入内层循环后,把 st 与 cs[i]以后的各字符串作比较,若有比 st 小者则把该字

    符串拷贝到 st 中,并把其下标赋予 p。内循环完成后如 p 不等于 i 说明有比 cs[i]更小的字

    符串出现,因此jiāo换 cs[i]和 st 的内容。至此已确定了数组 cs 的第 i 号元素的排序值。然

    后输出该字符串。在外循环全部完成之后即完成全部排序和输出。

    7.5 本章小结

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    1.数组是程序设计中最常用的数据结构。数组可分为数值数组(整数组,实数组),字符数组

    以及后面将要介绍的指针数组,结构数组等。

    2.数组可以是一维的,二维的或多维的。

    3.数组类型说明由类型说明符、数组名、
上一页 目录 下一页