“输入三个字符后,按个字符的ASCII码从小到大的顺序输出这三个字符”的做法

代码一:

#include <stdio.h>
#include <string.h>
void exchange(char **a, char **b)
{
char *c;
c = *a;
*a = *b;
*b = c;
}
void SWAP3(char **a, char **b, char **c)
{
if (strcmp(*a,*b) > 0)
{
exchange(a,b);
}
if (strcmp(*a,*c) > 0)
{
exchange(a,c);
}
if (strcmp(*b,*c) > 0)
{
exchange(b,c);
}


}
int main(int argc, char const *argv[])
{
char *a, *b, *c;
char j, k, l;
printf("Please input num :\n");
scanf("%c%c%c", &j, &k, &l);
a = &j;
b = &k;
c = &l;
SWAP3(&a,&b,&c);
printf("This is the result of SWAP3 : %c %c %c\n", *a, *b, *c);
return 0;
}

代码二:

#include <stdio.h>
#include <string.h>
void exchange(char *a, char *b)
{
char *c;
char c0 = 'a';
c = &c0;
*c = *a;
*a = *b;
*b = *c;
}
void swap1(char *a, char *b, char *c)
{
if (*a > *b)
{
exchange(a,b);
if (*b > *c)
{
exchange(b,c);
if (*a > *b)
{
exchange(a,b);
}
}
}
else
{
if (*b > *c)
{
exchange(b,c);
}
}
}
void Swap2(char *a, char *b, char *c)
{
if (*a > *b)
{
exchange(a,b);
}
if (*a > *c)
{
printf("asdasd %c\n", *a);
exchange(a,c);
}
if (*b > *c)
{
printf("asdasdasd  %c\n", *a);
exchange(b,c);
}
}
int main(int argc, char const *argv[])
{
char *a, *b, *c;
char j, k, l;
printf("Please input num :\n");
scanf("%c%c%c", &j, &k, &l);
a = &j;
b = &k;
c = &l;
swap1(a,b,c);
printf("This is the result of swap : %c %c %c\n", *a, *b, *c);
Swap2(a,b,c);
printf("This is the result of Swap : %c %c %c\n", *a, *b, *c);
return 0;
}

代码三:

#include "stdio.h"
char max(char a, char b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
char min(char a, char b)
{
if (a < b)
{
return a;
}
else
{
return b;
}
}


int main(int argc, char const *argv[])
{
char c0, c1, c2, c3, c4, c5, c6, c7;
printf("Please input num :\n");
scanf("%c%c%c", &c0, &c1, &c2);
c3 = max(c0,c1);
c4 = max(c3,c2);
c5 = min(c0,c1);
c6 = min(c5,c2);
c7 = c0 + c1 + c2 - c4 - c6;
printf("%c %c %c\n", c4, c7, c6);
return 0;
}


其实代码一和代码二的区别就是exchange函数改变的是char变量a, b, c的顺序还是改变的是直指char变量的指针*a, *b, *c的顺序。代码三只能在数量要求较少的时候比较方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值