#include <stdio.h>
void sortAscll(char &a, char &b)
{
char tmp;
if(a > b)
{
tmp = a;
a = b;
b = tmp;
}
}
int main()
{
char a, b, c;
while(scanf("%c%c%c", &a, &b, &c) != EOF) {
getchar();
sortAscll(a, b);
sortAscll(a, c);
sortAscll(b, c);
printf("%c %c %c\n", a, b, c);
}
return 0;
}
注意点
输入a、b、c三个字符之后需要输入一个回车,所以必须用getchar()来接受到缓冲区之中;如果没有getchar(),那么三个字符之后的回车符会变成字符a
总结
这道题算法很简单,对比交换
主要的问题是函数形参的传递
值传递和引用传递的区别
- 引用传递
引用传递一般是对对象(引用)型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身,所以引用对象进行操作时会改变原对象
sortASCII(char &a, char &b) - 地址传递
就是当调用一个过程时,是把实参变量的内存地址传递给被调用过程的形参,也就是说形参与实参使用相同地址的内存单元。因此当在被调用过程中改变形参的值,就等于改变了实参的值。
sortASCII(char *a, char *b) - 值传递
值传递是对基本型变量而言的,传递的是一个变量的副本,改变副本不影响原变量
sortASCII(char a, char b)