输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。

题目描述

输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。

输入

3行,每行一个用字符串。保证每个字符串的长度不超过20。

输出

按从小到大的顺序输出这3个字符串,每个字符串一行。
请注意行尾输出换行。

样例输入

China
CLOCK
deal

样例输出

CLOCK
China
deal

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void swap(char** a,char** b)//输入的参数是二级指针(指针的地址)
{ 
    char* temp;//对指针(内容的地址)进行改变
    temp= *a;//改变一件事,要传入它的地址,改变地址,就要传入地址的地址 
    *a= *b;//地址和指针temp等同 
    *b=temp;
}
 
int main()
{ 
    char a[50],b[50],c[50];
    scanf("%s%s%s",a,b,c);//为什么不用空格 ? 
    char *p1=a,*p2=b,*p3=c;
    if(strcmp(p1,p2)>0) swap(&p1,&p2);// 要交换地址p1,所以swap中的参数是p1的地址 
    if(strcmp(p1,p3)>0) swap(&p1,&p3);//为什么strcmp中不是*p1,p1可以表示字符串吗??字符数组本来就是第一个字符的地址,p1=a 
    if(strcmp(p2,p3)>0) swap(&p2,&p3);
    printf("%s\n%s\n%s\n",p1,p2,p3);//p1=a,字符数组也用第一个字符的地址表示,所以可以用指针 
    return 0;
}
    原文作者:CodeGin
    原文地址: https://blog.csdn.net/qq_46237253/article/details/104756275
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞