c练习——字符串交换

题目描述

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

输入

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

输出

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

样例输入 Copy

China
CLOCK
deal

样例输出 Copy

CLOCK
China
deal

方法一

#include <stdio.h>
#include <string.h>

void swap_1(char** a,char** b)          //参数是二级指针(指针的地址)
{
    char* temp;                         //对指针(内容的地址)进行改变
    temp= *a;
    *a= *b;
    *b=temp;

}

int main()
{
    char a[50],b[50],c[50];             //字符串数组的交换,需要交换字符串地址
    scanf("%s%s%s",a,b,c);              //%s通过识别换行或空格结束当前字符串输入
    char *p1=a,*p2=b,*p3=c;             //p指针为数组地址a的地址
    if(strcmp(a,b)>0) swap_1(&p1,&p2);  //交换字符串地址a,b,就要传入地址a,b的地址p1,p2
    if(strcmp(a,c)>0) swap_1(&p1,&p3);
    if(strcmp(b,c)>0) swap_1(&p2,&p3);  //交换后a,b,c数组不变,但p指针指向改变
    printf("%s\n%s\n%s\n",p1,p2,p3);    //此时p1指向最小字符串即b
    return 0;
}

方法二

#include <stdio.h>
#include <string.h>

void swap_2(char *a,char *b)            //字符串交换
{
    char temp[20];
    strcpy(temp,a);                     //strcpy拷贝字符串的函数
    strcpy(a,b);
    strcpy(b,temp);
}

int main()
{
    char a[50],b[50],c[50];
    scanf("%s%s%s",a,b,c);
    if(strcmp(a,b)>0) swap_2(a,b);
    if(strcmp(a,c)>0) swap_2(a,c);
    if(strcmp(b,c)>0) swap_2(b,c);
    printf("%s\n%s\n%s\n",a,b,c);
    return 0;
}

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值