代码一:
#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的顺序。代码三只能在数量要求较少的时候比较方便。