C语言刷题(25):指针数组,指向指针的指针综合运用,题:输入3个字符串,按由小到大的顺序输出

#include <stdio.h>
#include <string.h>
void main()
{
    void sort(char *p,char *q,char *r);
    void print(char **a);
    char a[3][30];
    char *str[3];//数组中指向有三个元素的指针
    int i;
    for(i =0;i<3;i++)
    {
        str[i] = a[i]; //将指针指向二维数组中一维数组的首地址
    }
    for(i=0;i<3;i++)
    {
         scanf("%s",str[i]); //输入三个字符串
    }
    sort(str[0],str[1],str[2]); //对三个字符串进行排序
    print(str);                   //输出str,str为二维数组的首地址
}
 void sort(char *p,char *q,char *r)
{
    void swap(char *p,char *q);
    if(strcmp(p,q)>0) //strcmp比较两个字符串时,p,q指针变量分别指向字符串的首地址
    {
        swap(p,q);
    }
    if(strcmp(p,r)>0)
    {
        swap(p,r);
    }
    if(strcmp(q,r)>0)
    {
        swap(q,r);
    }
}
void swap(char *p,char *q) //当指针中存贮的是字符串时,需要使用srcpy进行交换,而不是使用*q,*p
{
    char t[20];
    strcpy(t,p);
    strcpy(p,q);
    strcpy(q,t);
}
void print(char **a) //接受二维数组的首地址需要,使用指向指针的指针
{
    int i;
    for(i=0;i<3;i++)
    {
        printf("%s\n",*(a+i));
    }
}

发布了45 篇原创文章 · 获赞 7 · 访问量 1601

猜你喜欢

转载自blog.csdn.net/qq_38173631/article/details/104015574