位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 指针数组的使用

提问人:刘团圆发布时间:2020-12-02

指针数组一般可以指向多个字符串,对字符串的操作将更灵活。

【例题】姓名升序输出

输入若干个人的姓名,请将这些人的名字按字母顺序升序输出。

算法分析:

将这些人的姓名字符串的首地址赋给一个字符指针数组的各个元素,如图所示。这些姓名字符串是常量字符串,常量字符串不可以使用字符串复制函数strcpyO来互相复制,因此可以考虑改变name[]数组中各个元素的指向。也就是说将name[0]指针指向最小的字符串,name[4]指针指向最大的字符串,那么在排序算法中,只需让指针之间相互交换即可。

name[0]


Z

h

a

n

g

s

d

n

\0

name[1]


L

i

5

i

\0





name[2]


W

a

n

9

w

u

\0



name[3]


Z

h

d

0

l

i

u

\0


name[4]


H

a

n

q

i

\0




程序代码如下:

#include <stdio.h>

void sort(char *name[], int count)     /* 对字符指针数组进行了排序 */

{

    char *t; 

      int i,j,min;

      for(i=0; i<count-l; i++)             /* 冒泡法排序 */

            for(j=O; j<count-l-i; j++)

                if(strcmp(name[j],name[j+1])>0)

                {

                    t=name[j];

                    name[j]=name[j+1];

                    name[j+1]=t;

                }

}

main()

{

    char *name[5]={"Zhangsan","LIsi","Wangwu","Zhaoliu","Hanqi"}

    int i=0;

    sort(name,5);            /*使用字符指针数组名作实参,调用排序函数sort()*/

    for(; i<5; i++)

        printf("%s\n",name[i]);

}

程序执行,输出结果为:

Hanqi

Lisi

Wangwu

Zhangsan

Zhaoliu


继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部