位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 指針數(shù)組的使用

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-02

指針數(shù)組一般可以指向多個(gè)字符串,對(duì)字符串的操作將更靈活。

【例題】姓名升序輸出

輸入若干個(gè)人的姓名,請(qǐng)將這些人的名字按字母順序升序輸出。

算法分析:

將這些人的姓名字符串的首地址賦給一個(gè)字符指針數(shù)組的各個(gè)元素,如圖所示。這些姓名字符串是常量字符串,常量字符串不可以使用字符串復(fù)制函數(shù)strcpyO來互相復(fù)制,因此可以考慮改變name[]數(shù)組中各個(gè)元素的指向。也就是說將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)     /* 對(duì)字符指針數(shù)組進(jìn)行了排序 */

{

    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);            /*使用字符指針數(shù)組名作實(shí)參,調(diào)用排序函數(shù)sort()*/

    for(; i<5; i++)

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

}

程序執(zhí)行,輸出結(jié)果為:

Hanqi

Lisi

Wangwu

Zhangsan

Zhaoliu


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部